(* Tentative de Résolution du Taquin ave A* *) type taquin = { vide : int * int ; cases : int array array } type deplacement = H | B | G | D let taqWin = { vide = (0,0); cases = [| [| 0; 1; 2; 3 |]; [| 4; 5; 6; 7 |]; [| 8; 9; 10; 11 |]; [| 12; 13; 14; 15 |]; |]};; (* taquins exemples *) let taq1 = { vide = (0,1); cases = [| [| 1; 0; 2; 7 |]; [| 4; 5; 3; 6 |]; [| 8; 9; 10; 11 |]; [| 12; 13; 14; 15 |]; |]};; let taq2 = { vide = (1,1) ; cases = [| [| 4; 6; 1; 3 |]; [| 8; 0; 2; 7 |]; [| 10; 12; 14; 11 |]; [| 9; 13; 5; 15 |]; |]};; (* Fonctions utilitaires *) let affiche_taquin taq = Printf.printf "-------------\n"; for i = 0 to 3 do for j = 0 to 3 do let v = taq.cases.(i).(j) in if v = 0 then Printf.printf "| " else if v < 10 then Printf.printf "| %d" v else Printf.printf "|%d" v done; Printf.printf "|\n" done; Printf.printf "-------------\n" ;; affiche_taquin taqWin;; affiche_taquin taq1;; affiche_taquin taq2;; (** Le jeu **) (** L' Heuristique **) (** La File de priorité : liste (element, prio) trié par priorité croissante **) type 'a fileprio = { mutable liste : ('a * int) list };; (* let testFP () = let fp = creeFP() in ajouterFP fp "test" 3; ajouterFP fp "ceci" 1; ajouterFP fp "est un" 2; while not (estVideFP fp) do let s = extraireMinFP fp in print_endline s done;; *) (** Les associations : taquin -> distance, deplacement **) (** Algo A* **) exception Success;; (* Resolution *)