diff --git a/rendu/rendu.pdf b/rendu/rendu.pdf index 2447339..efe9e1a 100644 Binary files a/rendu/rendu.pdf and b/rendu/rendu.pdf differ diff --git a/rendu/rendu.tex b/rendu/rendu.tex index f29ed13..fba44bd 100644 --- a/rendu/rendu.tex +++ b/rendu/rendu.tex @@ -69,22 +69,21 @@ \section{Présentation du Projet} \subsection{Introduction et règles du jeu} - L'Heyawake est un puzzle joué dans une grille rectangulaire séparés en plusieurs aires dont le but - est de colorés des cases en noir et blanc en accord avec les règles : + L'Heyawake est un puzzle joué dans une grille rectangulaire séparée en plusieurs aires dont le but + est de colorer des cases en noir et blanc en accord avec les règles : \begin{listeFleche} \item Certaines aires contiennent un chiffre qui montre combien il y a de cases noires dans l'aire \begin{listeFleche} - \item Aire avec un 0 ne doivent pas avoir de cases noires - \item Aire avec un 1 contient une case noire - \item Etc\dots + \item Aire avec un 0 ne doit pas avoir de cases noires + \item Aire avec un 1 contient une case noire, on répète ses étapes autant de fois qu'il le faut \end{listeFleche} - \item Toutes les cases blanches doivent être connectés en un seul groupe, pas de groupe isolés, elles doivent toutes être reliés - \item Deux cases noires de peuvent être l'un à côté de l'autre horizontalement et verticalement (en diagonale, c'est possible) + \item Toutes les cases blanches doivent être connectées en un seul groupe, pas de groupes isolés, elles doivent toutes être reliées + \item Deux cases noires ne peuvent être l'un à côté de l'autre horizontalement et verticalement (en diagonale, c'est possible) \begin{listeFleche} - \item Ca veut dire que les cases noires doivent être que entourés de cases blanches + \item Ça veut dire que les cases noires doivent n'être qu'entourer de cases blanches \end{listeFleche} - \item Une rangée de case blanche ne peuvent pas être alignée au-delà de 2 aires + \item Une rangée de case blanche ne peut pas être alignée au-delà de 2 aires \end{listeFleche} \subsection{Réalisation} @@ -92,23 +91,23 @@ \item Mettre toutes les aires avec un 0 en blanc \item Mettre les aires avec 1 et que d'une case en noire \item Mettre des cases noires là où une rangée de cases blanches dans plus de 2 aires peut se faire - \item Toujours mettre du blanc autour des celulles noires + \item Toujours mettre du blanc autour des cases noires \begin{listeFleche} \item En suivant cette étape, quand on met une case noire dans une aire avec un chiffre 1, colore tout le reste de l'aire en blanc \end{listeFleche} - \item Toujours verifié que les cases blanches ne sont pas piégés entre des cases noires + \item Toujours vérifié que les cases blanches ne sont pas piégées entre des cases noires \begin{listeFleche} - \item Ca implique que dans ce schéma suivant avec B une case blanche, N une case noire et X une case vide : + \item Ça implique que dans ce schéma suivant avec B une case blanche, N une case noire et X une case vide : \begin{listeFleche} \item B X B $\rightarrow$ B B B \item N B N $\rightarrow$ N B N \item B N B $\rightarrow$ B N B - \item Le X doit obligatoirement devenir blanc pour laisser une sortie à la case blanc qui se trouve entre les cases noires + \item Le X doit obligatoirement devenir blanc pour laisser une sortie à la case blanche qui se trouve entre les cases noires \end{listeFleche} \end{listeFleche} \end{listeFleche} - Le programme se lance en appelant le prédicat \emph{run} avec comme argument une liste de listes des aires. + Le programme se lance en appelant le prédicat \emph{\texttt{run}} avec comme argument une liste de listes des aires. \begin{lstlisting} run([[0,0,1,1,2], [2,0,2,2,-1], [3,0,5,1,-1], @@ -122,7 +121,7 @@ run([[0,0,1,1,2], [2,0,2,2,-1], [3,0,5,1,-1], \centering \includegraphics[width=5cm, height=5cm]{default} \caption{Puzzle de difficulté facile d'Heyawake} - \label{fig:default} + \label{fig:defaultFig} \end{figure} @@ -131,39 +130,39 @@ run([[0,0,1,1,2], [2,0,2,2,-1], [3,0,5,1,-1], \begin{listeFleche} \item On vérifie les aires avec un 2 et de 4 cases puis on colorie la case 2 en noire et ses diagonales \begin{listeFleche} - \item On colore les cases adjacentes au noire en blanc, on le fais autant de fois que nécessaire + \item On colore les cases adjacentes aux noires en blanc, on le fait autant de fois que nécessaire \end{listeFleche} - \item On regarde quelles cases doivent être colorés en noire pour éviter de faire des lignes de 4 cases blanches - \item On connecte les cases blanches entre elle sans faire de lignes de plus de 3 cases dans des zones différentes + \item On regarde quelles cases doivent être colorées en noire pour éviter de faire des lignes de 4 cases blanches + \item On connecte les cases blanches ensemble sans faire de lignes de plus de 3 cases dans des zones différentes \item Maintenant on essaie de rajouter des cases noires : \begin{listeFleche} \item On met une case noire pour éviter des groupes de 3 cases blanches \item On colorie les cases adjacentes à la nouvelle case noire en blanc \end{listeFleche} - \item On fait en sorte que toutes les cases blanches soient connectés en rajoutant des cases blanches si possible - \item On remplie les cases noires là où on peut les mettre, et on continue jusqu'à qu'il n'y est plus de cases sans couleurs. + \item On fait en sorte que toutes les cases blanches soient connectées en rajoutant des cases blanches si possible + \item On remplit les cases noires là où on peut les mettre, et on continue jusqu'à qu'il n'y est plus de cases sans couleurs. \end{listeFleche} \section{Le programme} \subsection{Le prédicat \emph{\texttt{aire}} en détail} Le prédicat \emph{\texttt{aire}} fonctionne comme l'image ci-contre. Il regarde chaque case de l'aire. - Une fois arrivé à l'extremité d'une aire, il descend d'une case si il y une ligne en dessous puis il parcours + Une fois arrivé à l'extrémité d'une aire, il descend d'une case s'il y une ligne en dessous puis il parcourt le chemin inverse avec le prédicat \emph{\texttt{airereverse}}. - Par exemple, sur la \autoref{fig:default}, prenons l'aire en bas à droite : + Par exemple, sur la \autoref{fig:defaultFig}, prenons l'aire en bas à droite : \begin{figure}[ht] \centering \includegraphics[width=5cm, height=5cm]{aireExplication} \caption{Explication fonctionnement \emph{\texttt{aire}}} \end{figure} - \subsection{Listing des prédicats utilisés} + \subsection{Liste des prédicats utilisés} \begin{listeFleche} \item \textbf{\texttt{aire(X1, Y1, X2, Y2, E, T)}} : Ce prédicat fait scanne l'aire renseignée et assigne une couleur via le prédicat \emph{\texttt{case}}. \item \textbf{\texttt{airereverse(X1, Y1, X2, Y2, 0, T)}} : - Ce prédicat est appellée par le prédicat \emph{\texttt{aire}} et permet de vérifier tout les éléments + Ce prédicat est appelée par le prédicat \emph{\texttt{aire}} et permet de vérifier tous les éléments d'une aire. \item \textbf{\texttt{case(X, Y, C)}} : Ce prédicat renvoie la couleur d'une case du puzzle.