Fonction qui détecte une circularité
Bonjour,
j'ai du mal à trouver la réponse de cette exercice,
2 - Fonction qui détecte une circularité
Écrire la fonction récursive circulaire qui détecte qu'une liste plate (sans sous-listes) est circulaire par son début.
Code:
1 2 3 4
| (setq liste '(a b c))
(rplacd (cddr liste) liste)
(circulaire liste) => t
(circulaire '(a b c a b c)) => nil |
Astuce : utilisez la fonction eq, qui compare deux adresses.
mon essai :
Code:
1 2 3 4 5
| (defun circulaire (liste)
(cond
((atom liste) nil) # si la liste est vide
((eq (cdr liste) (car liste) t)
((circulaire (cdr liste) (car liste)) ) ) |
mais ça ne marche pas :s
de l'aide svp