bonjour a tous...
je me retrouve avec un devoir maison a faire que je pensée avoir compris..
voici les 2 exercices ou je bloque..
En utilisant reduce, donner une definition de somme-carres
tq : (somme-carres (1 2 3 4 5)) --> 55 (soit 5²+4²+3²+2²+1²)
Ma solution :
(define (somme-carres L)
(if (pair? L)
(if (pair? (cdr L))
(reduce + (* (car L) (car L)) (cdr L))
(list))
(list)))
(somme-carres (1 2 3 4 5)
ceci me renvoie 15 mais pourquoi ?
2) question.... Toujours avec REDUCE
sans reduce je trouve les deux fonctions mais lorsque j'integre Redruce rien ne marche !!!
nombre-occurences, qui a pour specification
nombre-occurences : [Valeur] * LISTE [Valeur] --> INT
c'est a dire exemple :
(nbre-occurence 2 (list 5 7 8 9)) -> 0
(nbre-occurence 3 (list)) -> ( )
(nbre-occurence 3 (list 1 2 3 4 5)) -> 1
(nbre-occurence "ma" (list 1 2 3 "ma" 3 "me" 4 "ma")) -> 2
ma solution est :
(define (nbre-oc e L)
;;; (compte-e x n) rend (n + 1) si x = e sinon n
(define (compte-e x n)
+ (if (equal? x e) 1 0) n)
(reduce compte-e 0 L))
ceci me renvoi
(nbre-occurence 2 (list 5 7 8 9)) -> 0
(nbre-occurence 3 (list)) -> 0
(nbre-occurence 3 (list 1 2 3 4 5)) -> 0
(nbre-occurence "ma" (list 1 2 3 "ma" 3 "me" 4 "ma")) -> 0
Ou est le probleme a nouveau ??
merci a tous....
Partager