LISP TD3 corrections    



;****************************
;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