Dans les langages de style Lisp, une liste est généralement définie comme ceci:
(list 1 2 3)
Aux fins de ce défi, toutes les listes ne contiendront que des entiers positifs ou d'autres listes. Nous laisserons également de côté le list
mot - clé au début, donc la liste ressemblera maintenant à ceci:
(1 2 3)
Nous pouvons obtenir le premier élément d'une liste en utilisant car
. Par exemple:
(car (1 2 3))
==> 1
Et nous pouvons obtenir la liste d'origine avec le premier élément supprimé avec cdr
:
(cdr (1 2 3))
==> (2 3)
Important: cdr
retournera toujours une liste, même si cette liste aurait un seul élément:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
Les listes peuvent également figurer dans d'autres listes:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Écrivez un programme qui renvoie du code qui utilise car
et cdr
pour renvoyer un certain entier dans une liste. Dans le code renvoyé par votre programme, vous pouvez supposer que la liste est stockée dans l
, l'entier cible est l
quelque part et que tous les entiers sont uniques.
Exemples:
Contribution: (6 1 3) 3
Production: (car (cdr (cdr l)))
Contribution: (4 5 (1 2 (7) 9 (10 8 14))) 8
Production: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Contribution: (1 12 1992) 1
Production: (car l)
(1 2 3) 16
est-il, reviendrons-nous ()
?
(1 2 3) 16
ci n'apparaîtra jamais.