Besoin d'aide

Besoin d'aide - Langages fonctionnels - Programmation

Marsh Posté le 27-05-2009 à 13:52:32    

Bonjour,
 
J'aurais besoin d'une piste pour faire mon exos, depuis une heure je tourne en rond et je n'arrive pas a trouver !  
 
Mon exercice consiste a partir d'une liste supprimer les doublons et la trier par exemple si j'ai comme liste '(3 2 1 2 4 4) j'ai pour resultat : '(1 2 3 4)  
 
J'ai essayer d'utiliser member, equal et le minimum .. mais j'ai l'impression de n'arriver a rien avec tout ça, donc j'aurais juste besoin d'un coup de pouce !  
 
merci

Reply

Marsh Posté le 27-05-2009 à 13:52:32   

Reply

Marsh Posté le 27-05-2009 à 13:54:00    

je suis tete en l'air et j'ai oublié de preciser que c'est en scheme

Reply

Marsh Posté le 27-05-2009 à 13:54:43    

Commences par trier ta liste, puis retire les doublons [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-05-2009 à 13:58:49    

ah c'est ce que j'etais justement en train de faire je vais continuer voir si j'y arrive

Reply

Marsh Posté le 27-05-2009 à 14:17:09    

j'ai esssayé ça pour supprimer mes doublons d'une liste déja triée , mais ça ne marche pas, qu'est ce qui ne va pas ?

 

(define CreerEnsemble
  (lambda (l)
    (if (null? (cdr l))
        l
        (if (= (car l)(car (CreerEnsemble (cdr l))))
              (CreerEnsemble (cdr l))
              (cons (car l)(car(CreerEnsemble (cdr l))))))))

Message cité 1 fois
Message édité par lisee26 le 27-05-2009 à 15:37:08
Reply

Marsh Posté le 27-05-2009 à 14:29:38    

je tiens a preciser aussi que je n'ai eu aucun veritable cours en scheme, seulement des documents envoyés par notre prof greviste ... donc ça explique pourquoi je galere autant et que je n'ai pour seule solution de demander de l'aide sur votre forum

Reply

Marsh Posté le 27-05-2009 à 21:34:26    

lisee26 a écrit :

j'ai esssayé ça pour supprimer mes doublons d'une liste déja triée , mais ça ne marche pas, qu'est ce qui ne va pas ?  
 
(define CreerEnsemble  
  (lambda (l)
    (if (null? (cdr l))
        l
        (if (= (car l)(car (CreerEnsemble (cdr l))))
              (CreerEnsemble (cdr l))
              (cons (car l)(car(CreerEnsemble (cdr l))))))))


Je ne sais pas ce qui ne va pas sans ton code mais tu appelles 3 fois (CreerEnsemble (cdr l)) ça me semble 2 fois de trop.
 
Pour supprimer les doublons dans une liste triéée, une possibilité serait de faire appel à une fonction intermédiaire à 2 arguments, l'element en cours de test  possède-t-il des doublons où non) , et la liste restant à purger.

Reply

Marsh Posté le 28-05-2009 à 11:06:16    

désolée je ne comprends ^pas ton idée ... :s

Reply

Marsh Posté le 28-05-2009 à 13:12:14    

lisee26 a écrit :

désolée je ne comprends ^pas ton idée ... :s

je pense à quelque chose comme çà

Code :
  1. (define CreerEnsemble
  2.   (lambda (l)
  3.      (purger (car l) l)))
  4. (define purger
  5.   (lambda (elem liste)
  6.     (cond ((null? l)  ...)
  7.             ((eq? elem (car liste)) ....)
  8.             (else ................))))


La fonction purge compare elem avec le premier de la liste
3 cas possibles
- la liste est vide, à toi de voir ce que tu dois faire en considérant la manière d'appeler cette fonction (purge (car l) l)
- le premier élément de la liste est egal à elem que dois-je renvoyer ?
- le premier élément de la liste est différent de elem que dois-je renvoyer (toujours en considérant la manière d'appeler purge)
 
A toi de voir quand il faut renvoyer elem dans la liste résultat.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed