IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scheme Discussion :

Soucis avec reduce


Sujet :

Scheme

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Par défaut Soucis avec reduce
    Bonjour , je viens d'apprendre "reduce" et je sais m'en servir pour des cas de base, mais dès que ça devient un poil plus compliqué je ne vois pas comment faire commme par exemple :

    "En utilisant la fonction reduce, donner une définition de la fonction nombre-occurrences, qui rend le nombre d'occurences d'un élément donné dans une liste."

    Si vous pouvez-m'indiquez comment préceder , ça m'aiderait beaucoup.
    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Par défaut
    Alors, personne pour m'aider ?

    Faut-il crér une fonction qui rend la liste des carres d'une liste ou bien il y a une meilleur méthode

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Le problème ne me semble pas complexe, il suffit d'utiliser reduce avec une fonction qui prend a et b en paramètres, teste b pour l'égalité avec l'élément cherché et renvoie a+1 s'il y a égalité, a sinon.

    --
    Jedaï

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Par défaut
    Ce n'est peut-etre pas complexe pour vous mais pour moi oui,
    je n'ai vu reduce qu'hier.
    Je vais essayer de faire comme tu l'as dit mais je ne crois pas que je vais réussir .
    Un peu plus de précision serait la bienvenue.

    Je sais faire la fonction qui rend le nombre d'occurence d'un element donné d'une liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (define (nbo a L)
        (if (pair? L)
            (if (equal? a (car L))
                (+ 1 (nbo a (cdr L)))
                (nbo a (cdr L))) 
           0))
    Mais comment la faire avec reduce ?

    A la limite, si vous pouvez-me donner le code en entier, je réfléchirais dessus et sa pourrais me servir de model.
    Merci

    Et si il faut faire une fonction interne , a quoi sert reduce ?

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Ok... Quel est ton scheme, et à quoi correspond "reduce" dedans ? Parce que moi je n'ai pas de "reduce" dans mon Scheme, je n'ai que "foldl" (qui m'est en fait plus familier que "reduce"). Donc que fait ton reduce exactement ?
    Avec foldl (qui est très similaire à ton "reduce"), la fonction décrite s'écrirait simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (define (count e L)
        (foldl (lambda (a b) (if (= a e) (+ b 1) b)) 0 L))
    Et si il faut faire une fonction interne , a quoi sert reduce ?
    A faire disparaître la récursion explicite.

    --
    Jedaï

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Citation Envoyé par bugmenot Voir le message
    [...]
    A la limite, si vous pouvez-me donner le code en entier, je réfléchirais dessus et sa pourrais me servir de model.[...]
    C'est le contraire... tu détailles où tu en es et on t'aide.
    Nous ne sommes pas là pour faire tes devoirs mais éventuellement pour te guider. Et n'oublies pas qu'il y a ton prof pour obtenir de l'aide.

    Qu'appelles tu « reduce » ? N'est ce pas une fonction fournie par ton prof ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Par défaut
    c'est bon j'ai reussi a le faire et j'avais oublier de venir le dire sur le forum
    Désolé

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo