Objective Caml version 3.08.1 # #use "TaquinTest3.ml";; type 'a chemin = Nil | Noeud of ('a * 'a chemin * int * int) val construire_transitions : 'a chemin -> 'a list -> ('a -> 'a -> int) -> ('a -> int) -> 'a chemin list = val appartient : 'a list -> 'a -> bool = val fusion : 'a list -> 'a list -> 'a list = val classe_bis : 'a chemin list -> 'a chemin -> 'a list -> ('a -> int) -> ('a -> 'a -> int) -> 'a chemin list = val classe : 'a chemin list -> 'a list -> 'a chemin -> 'a list -> ('a -> int) -> ('a -> 'a -> int) -> 'a chemin list = val decheminiser_tete : 'a chemin -> 'a = val decheminiser : 'a chemin -> 'a list = val recherche2 : 'a -> ('a -> bool) -> ('a -> 'a list) -> ('a -> int) -> ('a -> 'a -> int) -> 'a list -> 'a list = type 'a taquin = Taquin of 'a list list type mouvement = Nord | Sud | Est | Ouest val taille_liste : 'a list -> int = val taille_taquin : 'a taquin -> int = val verif_taille : 'a taquin -> bool = val presence_liste : 'a list -> 'a -> bool = val presence_casevide : 'a taquin -> 'a -> bool = val verif_taquin : 'a taquin -> 'a -> bool = val test_liste_but : 'a list -> 'a list -> bool = val chercher_liste : 'a list -> 'a -> int = val chercher_pos : 'a taquin -> 'a -> int * int = val possibilites : 'a taquin -> int * int -> mouvement list = val get_liste : 'a list -> int -> 'a = val set_liste : 'a list -> int -> 'a -> 'a list = val get_taquin : 'a taquin -> int * int -> 'a = val detaquiniser : 'a taquin -> 'a list list = val set_taquin : 'a taquin -> int * int -> 'a -> 'a taquin = val deplacerN : 'a taquin -> int * int -> 'a taquin = val deplacerS : 'a taquin -> int * int -> 'a taquin = val deplacerE : 'a taquin -> int * int -> 'a taquin = val deplacerO : 'a taquin -> int * int -> 'a taquin = val deplacer : 'a taquin -> int * int -> mouvement -> 'a taquin = val inv_liste : 'a list -> 'a list = val afficher_liste_int : int list -> unit = val afficher_taquin_int : int taquin -> unit = val afficher_liste_taquins_int : int taquin list -> unit = val mouvement_taquin : 'a taquin -> 'a taquin -> 'a -> mouvement = val mouvements_liste_taquins : 'a taquin list -> 'a -> mouvement list = val afficher_mvt : mouvement -> unit = val afficher_liste_mvts : mouvement list -> unit = val etat_suivant : 'a list -> int -> 'a = val etat_precedent : 'a list -> int -> 'a = val appartient : 'a list -> 'a -> bool = val equiv_deplacement : int -> mouvement = val genere_mouvements : int -> mouvement list = val melanger_taquin : 'a taquin -> mouvement list -> 'a -> 'a taquin = val case_vide : int = 0 val taquin_ini : int taquin = Taquin [[1; 5; 2; 3]; [4; 6; 0; 7]; [8; 14; 10; 11]; [12; 9; 13; 15]] val taquin_but : int taquin = Taquin [[0; 1; 2; 3]; [4; 5; 6; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]] Verification taquin ini : - : unit = () - : bool = true Verification taquin fin : - : unit = () - : bool = true Taille du taquin : - : unit = () - : int = 4 val test_etat_but : int taquin -> bool = val fils_etat : int taquin -> int taquin list = val estime_etat_un : int taquin -> int * int -> int = val carre : int -> int = val estime_etat : int taquin -> int = val cout_transition : 'a -> 'b -> int = val solution : int taquin list = [Taquin [[0; 1; 2; 3]; [4; 5; 6; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]; Taquin [[1; 0; 2; 3]; [4; 5; 6; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]; Taquin [[1; 5; 2; 3]; [4; 0; 6; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 0; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 9; 0; 11]; [12; 13; 14; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 9; 14; 11]; [12; 13; 0; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 9; 14; 11]; [12; 0; 13; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 0; 14; 11]; [12; 9; 13; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 14; 0; 11]; [12; 9; 13; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 0; 7]; [8; 14; 10; 11]; [12; 9; 13; 15]]] val solution : int taquin list = [Taquin [[1; 5; 2; 3]; [4; 6; 0; 7]; [8; 14; 10; 11]; [12; 9; 13; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 14; 0; 11]; [12; 9; 13; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 0; 14; 11]; [12; 9; 13; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 9; 14; 11]; [12; 0; 13; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 9; 14; 11]; [12; 13; 0; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 10; 7]; [8; 9; 0; 11]; [12; 13; 14; 15]]; Taquin [[1; 5; 2; 3]; [4; 6; 0; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]; Taquin [[1; 5; 2; 3]; [4; 0; 6; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]; Taquin [[1; 0; 2; 3]; [4; 5; 6; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]; Taquin [[0; 1; 2; 3]; [4; 5; 6; 7]; [8; 9; 10; 11]; [12; 13; 14; 15]]] val sol_mouvements : mouvement list = [Sud; Ouest; Sud; Est; Nord; Nord; Ouest; Nord; Ouest] - : unit = () Mouvements solutions : - : unit = () Sud | Ouest | Sud | Est | Nord | Nord | Ouest | Nord | Ouest- : unit = () - : unit = () Taquin a l'etat initial : - : unit = () 1 5 2 3 4 6 0 7 8 14 10 11 12 9 13 15 - : unit = () Taquin a l'etat but : - : unit = () 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - : unit = ()