TP1 : LISP
- Etant donnée la commande suivante
(setq l1 '(a b c d)
l2 '((a b) (c d))
l3 '(((a) (b) (c) (d)))
l4 '((((a) b) c) d)
)
- 1.
- Représentez ces listes sous-forme d'arbre binaire.
- 2.
- Que faut-il écrire pour atteindre C dans les listes l1 à l4?
- Écrire les fonctions suivantes :
- 1.
- fac qui calcule la factorielle pour un entier n supérieur ou égal à 0.
>(fac 5)
120
- 2.
- lnpe qui renvoie la liste des n premiers entiers dans l'ordre
décroissant 0 non compris.
> (lnpe 5)
(5 4 3 2 1)
- 3.
- fib qui renvoie le nème terme de la suite de Fibonnacci :
u(0) = 1, u(1) = 1, u(n) = u(n-1) + u(n-2)
>(fib 5)
8
- 4.
- longueur qui renvoie la longueur d'une liste
> (longueur '(a b c d e))
5
- 5.
- dernier qui renvoie le dernier élément d'une liste
> (dernier '(a b c d e))
E
- 6.
- conc qui concatène deux listes
> (conc '(a b) '(c d e))
(A B C D E)
- 7.
- present qui détecte la présence d'un élément dans une liste
> (present 'a '(c d e a b))
T
- 8.
- elimin qui élimine toutes les occurrences d'un atome dans une liste
> (elimin 'a '(c a d e a b))
(C D E B)
- 9.
- renverse qui renvoie la liste dans l'ordre inverse
>(renverse '(a b c d e))
(E D C B A)
- 10.
- rang_pair qui renvoie tous les éléments de rang pairs d'une liste
> (rang_pair '(a b c d e f))
(B D F)
- 11.
- remplace qui remplace toutes les occurrences de x par y dans l
> (remplace 'a 'f '(c a d e a b))
(C F D E F B)
- 12.
- renversebis qui qui fait la même chose que renverse mais sans utiliser
conc (en utilisant un accumulateur)
- 13.
- present2 qui détecte la présence à un niveau quelconque
>(present2 'a '(1 (2 a) 3))
T
- 14.
- elimin2 à tous les niveaux
>(elimin2 'a '(1 (2 a) 3))
(1 (2) 3)
- 15.
- remplace2 à tous les niveaux
>(remplace2 'a 'b '(1 (2 a) 3))
(1 (2 B) 3)
- 16.
- renverse2 qui renverse également les sous-listes
>(renverse2 '(1 (2 a) 3))
(3 (A 2) 1)
Florence Bannay - Béatrice Duval
19-10-2000