(****** Tours et Réussite de Hanoï ******) let cree_liste = let rec rcree result = function | 0 -> result | p -> rcree (p::result) (p-1) in rcree [] ;; let rec affiche l= match l with | [] -> print_string "| " | a::b -> ( print_int a; print_string " "; affiche b ) ;; let rec resoud (deb, fin, aux) = function |1 -> (tl deb, (hd deb)::fin, aux) |n -> let (deb1, aux1, fin1)= resoud (deb, aux, fin) (n-1) in let (deb2, fin2, aux2)= resoud (deb1, fin1, aux1) 1 in let (aux3, fin3, deb3)= resoud (aux2, fin2, deb2) (n-1) in ( affiche deb2; affiche fin2; affiche aux2; print_newline(); (deb3, fin3, aux3); ) ;; let initialise n= print_newline(); resoud ((cree_liste n), [], []) n;; initialise 5;;