(*factorielle*) let fact n = let rec f acc = function | 0 -> acc | n -> f (n*acc) (n-1) in f 1 n;; (*trouve la nth eme permutation des elements de la liste li, constituee de nbr elements*) let rec perm nth nbr li= let rec f nth nbr li = function | [] -> li |hd::lt -> let fnbr=fact (nbr -1) in if nth < fnbr then hd:: (perm nth (nbr-1) (List.filter (fun x -> x <> hd) li)) else f (nth - fnbr) nbr li lt in f nth nbr li li;; perm 999999 10 [0;1;2;3;4;5;6;7;8;9];;
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.