Fonction avec des doublets
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:
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:
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:
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:
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)))) )) |