Bonjour,

J'ai deux fonction que je ne trouves pas la réponse total :

1. Faire une fonction pour récupérer dans une liste le premier de chaque doublet dont le deuxième élément est supérieur à 10.

'( (1 . 27) (3 . 9) ( (2 . 33) (5 . 27) (4 . 52) (7 . 8) ) (6 . 74) )

ma fonction est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
(defun atomes (nomber liste)
(cond
((not liste) nil)
((and (listp (car liste)) (>=  (cdr (car liste)) nomber))
(cons (car (car liste)) (atomes nomber (cdr liste))) )
((atomes nomber (car (cdr liste)))) ))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
[4]> (atomes 10 '( (1 . 27) (3 . 9) ( (2 . 33) (5 . 27) (4 . 52) (7 . 8) ) (6 . 74) ))
(1 2 5 4)
Normalement je devais avoir comme résltat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
[4]> (atomes 10 '( (1 . 27) (3 . 9) ( (2 . 33) (5 . 27) (4 . 52) (7 . 8) ) (6 . 74) ))
(1 2 5 4 6)
2. Modifier la liste pour qu'elle ne contienne plus que les doublets dont le deuxième élément est supérieur à 10.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
(defun atomes (nomber liste)
(cond
((not liste) nil)
((and (listp (car liste)) (>=  (cdr (car liste)) nomber))
(rplacd liste (atomes nomber (cdr liste))) )
((atomes nomber (car (cdr liste)))) ))