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

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 53
    Points
    53
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 53
    Points
    53
    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 éminent
    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
    Points : 8 586
    Points
    8 586
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 53
    Points
    53
    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 éminent
    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
    Points : 8 586
    Points
    8 586
    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 : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 53
    Points
    53
    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é

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    C'est donc

  9. #9
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Jedaï: reduce est pas dans Scheme directement, il est dans une librairie qui s'appelle SRFI que la plupart des Scheme fournissent en standard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > reduce
    . reference to undefined identifier: reduce
    > (require (lib "1.ss" "srfi"))
    > reduce
    #<procedure:reduce>
    > (reduce + 0 (list 1 2 3 4 5))
    15
    >

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Ce « reduce » c'est l'opérateur « foldl » ou « foldr »
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > (foldl + 0 (list 1 2 3 4 5))
    15
    C'est ce que disait Jedai.

  11. #11
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Je sais, je faisais juste donner un complément d'information à Jedaï.

    http://srfi.schemers.org/srfi-1/srfi...#FoldUnfoldMap

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Je sais, je faisais juste donner un complément d'information à Jedaï.

    http://srfi.schemers.org/srfi-1/srfi...#FoldUnfoldMap
    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