Combinaisons
Exercice · OCaml (option informatique), chapitre 11 — Récursivité et retour sur trace
Énoncé
Écrire combinaisons k l : toutes les sous-listes de l à exactement k éléments.
Corrigé
let rec combinaisons k l =
if k = 0 then [[]]
else
match l with
| [] -> []
| x :: reste ->
List.map (fun c -> x :: c) (combinaisons (k - 1) reste) (* avec x *)
@ combinaisons k reste (* sans x *)
Même dichotomie de choix que parties, mais en contraignant la taille : prendre x (il reste k-1 à choisir) ou non (toujours k à choisir). Les cas de base : k = 0 (une seule combinaison, vide) et liste vide avec k > 0 (aucune). On obtient combinaisons.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.