Modélisation et résolution du problème des quatre cubes avec le solveur Choco \cite{chocoSolver}.
\subsection{Constantes}
\label{sec:q1constantes}
Deux constantes sont définies dans l'énoncé du problème. Il s'agit du nombre de cubes (N) ainsi que du nombre de faces (F) sur le prisme rectangualaire. Ces deux constantes sont fixées à 4.
\subsection{Variables}
\label{sec:q1variables}
On définit une matrice de variables $facesCubes_{NF}$ où $facesCubes_{ij}$ correspondant aux couleurs que prennent chacun des 4 cubes sur les 4 faces du prisme rectangulaire. Les valeurs 1 à 4 servent respectivement à identifier le rouge, le vert, le bleu et le jaune.
\begin{align}
\label{eq:q1v1}
&facesCubes_{ij}&= 1_{\text{Cube }i\text{ - face rectangulaire j = rouge}}\forall 1 \leq i \leq N, 1 \leq j \leq F\\
dom(facesCubes_{ij}) &= \lbrace 1,2,3,4 \rbrace\in\theta(1) &\forall 1 \leq i \leq N, 1 \leq j \leq F\nonumber
\end{align}
\subsubsection{Nombre total de variables et de valeurs}
\label{sec:q1nbtotvar}
Le nombre total de variables pour la définition \eqref{eq:q1v1}:
\begin{align}
\label{eq:vartot}
NF \in\theta(NF)
\end{align}
Le nombre total de valeurs possibles pour ces mêmes définitions est:
\begin{align}
\label{eq:valtot}
NF \times 4 &= 4NF \in\theta(NF)
\end{align}
\subsection{Contraintes}
\label{sec:q1contraintes}
\subsubsection{Tableaux des couleurs}
\label{sec:tableauCouleurs}
La contrainte du tableau des couleurs s'énonce comme suit: pour chaque cube $i$, un tableau doit être construit dans lequel seront énumérées toutes les séquences possibles des couleurs apparaissant sur les 4 faces du prisme. Pour chacun des 4 cubes, il y a 24 combinaisons (6 faces pointant dans une direction x 4 orientations par face) possibles. Si certaines combinaisons se répètent, ces doublons seront pris en charge par le solveur.
\bigskip
Il s'agit d'une contrainte de type \textsc{tableau} qui s'écrit de la façon suivante :
\subsubsection{Couleurs différentes sur les 4 faces}
\label{sec:couleur4faces}
Le problème des 4 cubes consiste à trouver un agencement de ces cubes permettant d'obtenir chacune des 4 couleurs sur les 4 faces rectangulaires du prisme créé.
\bigskip
Il s'agit d'une contrainte de type \textsc{AllDifferent} qui s'écrit de la façon suivante:
Nous avons demandé au solveur Choco de trouver une solution au problème des 4 cubes à l'aide de la méthode \texttt{findSolution}. Nous avons utilisé les heuristiques par défaut car elles permettaient d'obtenir un résultat en moins d'une seconde. Le solveur trouve une seule solution en effectuant 0 retour arrière et ce, en 0,038s.