Il y a 2 solutions:
41268-7935
41286-7953
Le petit programme qui suit, écrit en langage caml-light, fait une recherche exhaustive sur toutes les permutations des chiffres de 1 à 9. La permutation est stockée dans un tableau t à 9 éléments.
Les 3 fonctions préliminaires permettent de remplacer la permutation t par la permutation suivante, dans l'ordre lexicographique, par un algorithme "classique".
Le programme s'arrête, en declanchant une exception lorsque la permutation (987654321) a été examinée.
(* Construction de la permutation suivante *)
let suffixe t =
let n = vect_length t in
let i = ref(n-1) in
while (!i >= 1) & t.(!i-1) > t.(!i) do decr i done ;
!i ;;
let rec retourne t a b =
if a < b then
let x = t.(a)
in
t.(a) <- t.(b) ;
t.(b) <- x ;
retourne t (a+1) (b-1) ;;
let suivante t =
let i = suffixe t and n = vect_length t in
if i = 0 then failwith "fin de la recherche";
retourne t i (n-1);
let j = ref(i) in
while t.(i-1) > t.(!j) do incr j done;
let x = t.(!j) in t.(!j) <- t.(i-1) ; t.(i-1) <- x;;
(* Recherche des solutions *)
let t = make_vect 9 0
in
for i = 0 to 8 do t.(i) <- i+1 done ;
while true do
let x = 10000*t.(0)+1000*t.(1)+100*t.(2)+10*t.(3)+t.(4)
and y = 1000*t.(5)+100*t.(6)+10*t.(7)+t.(8)
in
if x - y = 33333 then
begin print_int(x);print_char(`-`);print_int(y);print_newline() end ;
suivante t
done ;;