\documentclass{beamer}

\usepackage[utf8x]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{xcolor}
\usepackage{trimclip}
\usepackage{listings} % intégration code

\usetheme{boxes}
\addtobeamertemplate{footline}{
    \marginbox{1pt 3pt 0pt 0pt}{
        \color[RGB]{173, 173, 224}{
            \insertframenumber/\inserttotalframenumber
        }
    }
}

% couleurs
\definecolor{defaultPredicat}{RGB}{121, 94, 38}
\definecolor{definitionChar}{RGB}{175, 0, 219}
\definecolor{argsAndPredicat}{RGB}{0, 96, 181}
\definecolor{string}{RGB}{163, 99, 21}
\definecolor{comment}{RGB}{0, 128, 0}
\lstset{
    frame=single, % encadré
    breaklines=true, % lignes dans le cadre
    columns=fullflexible, % contenu bien présenté dans le cadre
    language=Prolog, % language
    tabsize=4, % nb d'espace par tabulation
    % chiffres
    numbers=left,
    numberstyle=\tiny,
    % affichage
    basicstyle=\ttfamily,
    keywordstyle=\color{defaultPredicat},
    identifierstyle=\color{argsAndPredicat},
    stringstyle=\color{string},
    commentstyle=\color{comment},
    literate=
        {:-}{{\textcolor{definitionChar}{:- }}}1
    % utf-8 fix source: https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings
        {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
        {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
        {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
        {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
        {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
        {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
        {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
        {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
        {ã}{{\~a}}1 {ẽ}{{\~e}}1 {ĩ}{{\~i}}1 {õ}{{\~o}}1 {ũ}{{\~u}}1
        {Ã}{{\~A}}1 {Ẽ}{{\~E}}1 {Ĩ}{{\~I}}1 {Õ}{{\~O}}1 {Ũ}{{\~U}}1
        {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
        {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
        {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
        {€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
        {»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 {¡}{{!`}}1,
    % espaces normaux sans underscore
    showspaces=false,
    showstringspaces=false,
    showtabs=false
}

\title{Résolveur d'Heyawake en Prolog}
\subtitle{Projet de fin de semestre}
\author{Kévin Martins Da Veiga et Anri Kennel}
\institute{Paris 8 - Programmation Déclarative et Bases de Données}
\date{}

\begin{document}

    \begin{frame}
        \titlepage
    \end{frame}


    \begin{frame}{Présentation et règles}
        \begin{columns}[T]
            \begin{column}{.48\textwidth}
                \textbf{But du jeu}
                \\
                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.
                \\
                \rule{15em}{0.15mm}
                \\
                \textbf{Example de plateau}
                \\
                \begin{figure}[ht]
                    \centering
                    \includegraphics[width=2cm, height=2cm]{../rendu/default}
                \end{figure}
            \end{column}
            \hfill
            \hspace{5pt}\vrule\hspace{5pt}
            \begin{column}{.48\textwidth}
                \textbf{Règles du jeu}
                \\
                \begin{itemize}
                    \item Les numéros dans les aires indiquent le nombre de cases noires
                    \item Les cases blanches ne doivent pas être isolés
                    \item Les cases noires ne doivent pas se toucher
                    \item Les cases blanches ne peuvent s'aligner sur plus de 2 aires
                \end{itemize}
                
            \end{column}
        \end{columns}
    \end{frame}

    \begin{frame}[fragile]{Explication code et erreurs}
        - On lance le programme avec le prédicat \emph{\texttt{run}} qui,
        récursivement, parcoure la grille du tableau en appellant le
        prédicat \emph{\texttt{aire}} qui sert à trouver les solutions.
        \begin{exampleblock}{Prédicat \emph{\texttt{run}}}
            \begin{lstlisting}
run([]) :- write('0: case blanc, 1: case noire').
run([[X1, Y1, X2, Y2, E] | Q]) :- T is X2 - X1, aire(X1, Y1, X2,Y2, E, T), run(Q).
            \end{lstlisting}
        \end{exampleblock}

        - Prédicat \emph{\texttt{aire}} ne fonctionne qu'à moitié
    \end{frame}

    \begin{frame}
        \begin{center}
            Conclusion
        \end{center}
    \end{frame}

\end{document}
