;; LIF3 - TP4 ; RECURSIVITE PROFONDE ; nombre de listes d'une liste en profondeur (principale comprise) ; avec une liste plate (nbl '(3 y k 8 5 "ert" t d)) ; -> 1 ; avec une liste quelconque (nbl '(3 (y k) (8 (5 "ert") t) d)) ; -> 4 (nbl '(3 (8 (5 "ert") t) d)) ; -> 3 ; avec une liste vide (nbl '()) ; -> 1 ; retourne le nb de nb > 0 d'une liste quelconque ; avec que des nombres (nbsup0 '(-3 2 1 2 -4)) ; -> 3 ; avec une liste plate (nbsup0 '(& -3 2 1 2 "cvb" -4 r)) ; -> 3 ; ave une liste quelconque (nbsup0 '(& -3 2 (1 (2 "cvb") -4) r)) ; -> 3 ; avec une liste vide (nbsup0 '()) ; -> 0 ; retourne la meme liste mais avec les valeurs absolues des nombres ; avec que des nombres (absliste '(-3 2 1 2 -4)) ; -> (3 2 1 2 4) ; avec une liste plate (absliste '(& -3 2 1 2 "cvb" -4 r)) ; -> (& 3 2 1 2 "cvb" 4 r) ; ave une liste quelconque (absliste '(& -3 2 (1 (2 "cvb") -4) r)) ; -> (& 3 2 (1 (2 "cvb") 4) r) ; avec une liste vide (absliste '()) ; -> () ; ARBRES ; arbre asymetrique a droite (noeud 2) (define a1 '(3 (2 (1 () ()) ()) (7 (5 (4 () ()) (6 () ())) (9 () ())))) ; arbre asymetrique a gauche (noeud 2) (define a2 '(3 (2 () (1 () ()) ) (7 (5 (4 () ()) (6 () ())) (9 () ())))) ; arbre symetrique (define a3 '(3 (2 (1 () ()) (0 () ())) (7 (5 (4 () ()) (6 () ())) (9 () ())))) ; arbre vide (define a4 '()) ; Ecrire une fonction qui compte le nombre de noeuds d un arbre. (nb-noeuds a1) ; -> 8 (nb-noeuds a2) ; -> 8 (nb-noeuds a3) ; -> 9 (nb-noeuds a4) ; -> 0 ; Ecrire une fonction qui compte le nombre de feuilles d un arbre. (nb-feuilles a1) ; -> 4 (nb-feuilles a2) ; -> 4 (nb-feuilles a3) ; -> 5 (nb-feuilles a4) ; -> 0 ; Ecrire une fonction qui multiplie par deux les valeurs des noeuds d un arbre de nombres. (fois2 a1) ; -> (6 (4 (2 () ()) ()) (14 (10 (8 () ()) (12 () ())) (18 () ()))) (fois2 a2) ; -> (6 (4 () (2 () ())) (14 (10 (8 () ()) (12 () ())) (18 () ()))) (fois2 a3) ; -> (6 (4 (2 () ()) (0 () ())) (14 (10 (8 () ()) (12 () ())) (18 () ()))) (fois2 a4) ; -> ()