let resoud_naivement ?(printP = print_plateau) (mon_instance:instance) =
myprint Verbeux_textuel ("##############################################################################################");
myprint Verbeux_textuel ("Appel a 'resoud_naivement' avec l'instance suivante :");
if (Verbeux_textuel = Verbeux_textuel) then print_instance mon_instance;
let liste_solutions =
(try (resoud_naivement_aux ~printP:printP ~liste_piece:mon_instance.pi ~plateau:(creer_plateau_vide ~printP:printP mon_instance) ~icourant:0 ~jcourant:0)
with Solution_trouvee_arg(ele) ->
(print_string "\n\nUne solution a été trouvée. La voici :\n";
print_string "###############\n";
printP ele;
print_string "###############";
[ele];
)
)
in
match liste_solutions with
| [] ->
print_string "\n\nAucune solution n'a été trouvée.\n";
raise Aucune_solution;
| el :: ssl ->
print_string "\n\n\tVoila tout les plateaux renvoyés :";
List.map (fun k -> print_string "\n"; printP k;) (el :: ssl);
print_string ("\n\n\t"^(string_of_int (List.length (el :: ssl)))^" candidats solutions ont été trouvés.");
(try (est_valide_plateau el; el;) with
| Solution_trouvee ->
(print_string "\n\nUne solution a été trouvée. La voici :\n";
printP el;
el;
)
| Mauvais_tableau ->
(print_string "\n\nLa plateau construit n'est pas structurelement correct.\n Erreur de construction !";
raise Mauvais_tableau;
)
| Erreur_compatibilite_h(i,j) ->
(print_string ("\n\nLa plateau construit n'est pas valide.\n Erreur de compatibilité horizontale aux cases : i="^(string_of_int i)^" et j="^(string_of_int j)^" !");
raise (Erreur_compatibilite_h(i,j));
)
| Erreur_compatibilite_v(i,j) ->
(print_string ("\n\nLa plateau construit n'est pas valide.\n Erreur de compatibilité verticale aux cases : i="^(string_of_int i)^" et j="^(string_of_int j)^" !");
raise (Erreur_compatibilite_v(i,j));
)
)