; LIF3 - TP3 ; TRI PAR SELECTION DU MAXIMUM ; Definir une fonction maximum qui calcule le maximum d une liste de nombres non vide. ; avec des nombres positifs (maximum '(1 8 5 2 6)) ; -> 8 ; avec des nombres négatifs (maximum '(-1 -8 -5 -2 -6)) ; -> -1 ; avec les deux (maximum '(1 -8 5 -2 6)) ; -> 6 ; Définir une fonction supprime qui supprime un element d une liste ; (on se contentera de supprimer la premiere occurrence de l element). ; quand l'element est present une seule fois (supprime 5 '(2 8 5 6 4)) ; -> (2 8 6 4) (supprime 2 '(2 8 5 6 4)) ; -> (8 5 6 4) (supprime 4 '(2 8 5 6 4)) ; -> (2 8 5 6) ; quand l'element est present plusieurs fois (supprime 5 '(5 8 5 6 4)) ; -> (8 5 6 4) (supprime 5 '(2 5 5 6 4)) ; -> (2 5 6 4) (supprime 5 '(2 8 5 6 5)) ; -> (2 8 5 6) ; quand l'element n'est pas present (supprime 1 '(2 8 5 6 4)) ; -> (2 8 5 6 4) ; sur une liste vide (supprime 5 '()) ; -> () ; Definir la fonction tri-max qui utilise les deux precedentes pour trier une liste de nombres par selection du maximum. ; avec une liste melangee (tri-max '(8 2 4 3 1 5 9)) ; -> (1 2 3 4 5 8 9) ; avec une liste triee (tri-max '(1 2 3 4 5 8 9)) ; -> (1 2 3 4 5 8 9) ; avec une liste inversee (tri-max '(9 8 5 4 3 2 1)) ; -> (1 2 3 4 5 8 9) ; avec une liste vide (tri-max '()) ; -> () ; LISTES ORDONNEES ; Definir une fonction qui, etant donne un nombre n et une liste l de nombres triee en ordre croissant, ; retourne la liste des elements de l diviseurs de n. ; Attention a ne pas parcourir la liste en totalite quand ce n est pas necessaire. ; avec une liste contenant des diviseurs (diviseurs '(1 2 3 4 5 8 12 13 15 17) 12) ; -> (1 2 3 4 12) ; avec une liste ne contenant pas de diviseurs (diviseurs '(5 8 11 13 15 17) 12) ; -> () ; avec une liste ou les nombres sont tous inferieurs a n (diviseurs '(1 2 3 4 5 8 11) 12) ; -> (1 2 3 4 11) ; avec une liste ou les nombres sont tous superieurs a n (diviseurs '(4 5 8 12 13 15 17) 3) ; -> () ; avec une liste vide (diviseurs '() 12) ; -> () ; Definir une fonction qui, etant donne un nombre n et une liste l de nombres triee en ordre croissant, ; retourne une liste de deux listes : la liste des elements de l inferieurs à n, ; et celle des elements de l superieurs ou egaux à n. ; Attention a ne pas parcourir la liste en totalite quand ce n est pas necessaire. ; avec une liste quelconques (separe '(1 3 4 6 8 9 12) 7) ; -> ((1 3 4 6) (8 9 12)) (separe '(1 3 4 6 8 9 12) 6) ; -> ((1 3 4) (6 8 9 12)) ; avec une liste ou les nombres sont tous inferieurs a n (separe '(1 3 4 6) 7) ; -> ((1 3 4 6) ()) ; avec une liste ou les nombres sont tous superieurs a n (separe '(8 9 12) 7) ; -> (() (8 9 12)) ; avec une liste vide (separe '() 7) ; -> (() ()) ; LISTE DE LISTES ; Definir une fonction ajoute qui insere un element en tete de la sous-liste dont l indice est passe en parametre. ; ajoute dans une des sous-listes (ajoute 'a '((e r) (r y b) (t e)) 1) ; -> ((a e r) (r y b) (t e)) (ajoute 'a '((e r) (r y b) (t e)) 2) ; -> ((e r) (a r y b) (t e)) (ajoute 'a '((e r) (r y b) (t e)) 3) ; -> ((e r) (r y b) (a t e)) ; ajoute dans une sous-liste qui n existe pas (ajoute 'a '((e r) (r y b) (t e)) 0) ; -> ((a) (e r) (r y b) (t e)) ; Definir une fonction (sp n x y) qui, etant donnes deux nombres x et y, ; calcule les n premiers termes de la suite xn = xn-1 + yn-1 et yn = xn-1 * yn-1. (sp 0 5 2) ; -> () (sp 1 5 2) ; -> ((5 2)) (sp 2 5 2) ; -> ((5 2) (7 10)) (sp 3 5 2) ; -> ((5 2) (7 10) (17 70)) (sp 4 5 2) ; -> ((5 2) (7 10) (17 70) (87 1190)) ; CALCULS EN DESCENDANT OU EN REMONTANT ; Nombre d'occurrences d'un element dans une liste ; quand l element est present (occurrence 'a '(a b c a e r d a t)) ; -> 3 (occurrence 'b '(a b c a e r d a t)) ; -> 1 ; quand l element est absent (occurrence 'w '(a b c a e r d a t)) ; -> 0 ; quand la liste est vide (occurrence 'a '()) ; -> 0