Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Vous vous y prenez tard !
- Mieux vaut donc se limiter à un seul point.
- A la fin de la séance de lundi dernier nous avons vu la fonction suivante:
- ;; Si l est un ensemble (liste sans répétitions) de n objets
- ;; et si k est un entier naturel ne dépassant pas n
- ;; alors la fonction renvoie la liste de toutes
- ;; les partitions de l en k parties
- (define k-partitions
- (lambda (l n k)
- (if (= n 0)
- (if (= k 0) '(()) '())
- (let ((rec1 (k-partitions (cdr l) (- n 1) (- k 1)))
- (rec2 (k-partitions (cdr l) (- n 1) k)))
- (append (insert-in-all (list (car l)) rec1)
- (apply append
- (map (lambda (part)
- (insert-in-one (car l) part))
- rec2)))))))
- ;; (k-partitions '(a b c d) 4 2)
- ;; '(((a) (b c d))
- ;; ((a b) (c d))
- ;; ((b) (a c d))
- ;; ((a b c) (d))
- ;; ((b c) (a d))
- ;; ((a c) (b d))
- ;; ((c) (a b d)))
- Cette fonction utilise deux fonctions auxiliaires:
- insert-in-all, dont nous avons vu la spécification et le code, et
- insert-in-one, dont vous devez écrire la spécification et le code.
- Bien cordialement,
- P. Gribomont
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement