;****************************
;exo 1
(de relier (ville1 ville2)
(let ( (voisin1 (get ville1 'voisin))
)
(if (member ville2 voisin1)
'La_liaison_est_deja_repertorie
(putprop ville1
(cons ville2 voisin1)
'voisin
)
(relier ville2 ville1)
'Liaison_repertoriee
)
)
)
;****************************
;exo 2
(de grand_pere (x)
(let ((pere_x (get x 'pere)))
(when pere_x (get pere_x 'pere))
)
)
;****************************
;exo 3
(de ancetre (x)
(let ( (pere_x (get x 'pere))
)
(if pere_x (ancetre pere_x) x
)
)
)
;****************************
;exo 4
(de ancetres (x)
(when x (cons x (append (ancetres (get x 'pere))
(ancetres (get x 'mere))
)
)
)
)
;****************************
;exo 5
(de putprop (x valeur prop)
(plist x (putprop_aux (plist x) valeur prop))
valeur); le resuultat est le nom de la valeur
(de putprop_aux (p-liste valeur prop)
(cond ;la p-liste est vide
( (null p-liste) (list prop valeur))
;la propriete est en tete de la p-liste
( (equal (car p-liste) prop) (cons prop (cons valeur (cddr p-liste)))
)
;sinon passer a la propriete suivante
( t (cons (car p-liste)
(cons (cadr p-liste)
(putprop_aux (cddr p-liste) valeur prop)
)
)
)
)
)
;****************************
;exo 6
(de cassoc (clef a-liste)
(cond ; la clef n'existe pas
( (null a-liste) '?)
; la 1ere paire possede la clef demandee
( (equal (caar a-liste) clef) (cdar a-liste))
;sinon passer a la paire suivante
(t (cassoc clef (cdr a-liste)))
)
)
;****************************
;exo 7
(de pairlist (lclef lval a-liste)
(if lclef
(cons (list (car lclef) (car lval))
(pairlist (cdr lclef) (cdr lval) a-liste)
)
)
)
Vincent Vajnovszki
ven 27 fév 13:03:55 NFT 1998