\clearpage
\section{Le défi \og Table\fg}\label{DefiTable}
La commande \lstinline!\DefiTable!$^{\text{\faIcon{sync-alt}}}$ permet d'afficher une table de multiplication où les produits ont été remplacés par des \og caractères\fg.\index{Jeux}\index[cle]{DefiTable@\lstinline+\DefiTable+}
\begin{center}
  \DefiTable[Creation]{LaTeX, c'est super génial !}
\end{center}
Elle a la forme suivante :
\begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em]
  \DefiTable{a}
\end{lstlisting}
où  \lstinline!a! est la liste des caractères utilisés pour le remplacement des produits : cette liste regroupe les caractères -- séparés par une espace -- des lignes situées au dessus de la diagonale descendante de la table de multiplication; chaque ligne étant séparée par le caractère \lstinline!§!.
\begin{Codes}[listing side text]{0.5}{}
\DefiTable{%
  - x ç w j è , k ö $:$%ligne 1
  §w è k $:$ a q \og{} r l%ligne 2
  §ö a g r d m f t%ligne 3
  §\og{} l m b é o c%ligne 4
  §s t à c . ê%ligne 5
  §o e i p z%ligne 6
  §h u ' y%ligne 7
  §n v î%ligne 8
  §\fg{} â%ligne 9
  §!%ligne 10
}
\end{Codes}
On accompagnera cette table de codage de la commande :
\begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em]
  \DefiTableTexte[!\sffamily\textlangle clés\textrangle!]{a}{b}
\end{lstlisting}
où
\begin{itemize}
\item \textlangle\lstinline!clés!\textrangle{} constituent un ensemble
  d'options pour paramétrer la commande (paramètres optionnels);
\item \lstinline!a! est la liste des produits à trouver ;
\item \lstinline!b! est la phrase à trouver, le caractère \lstinline!*! séparant les mots.
\end{itemize}
Pour les paramètres \lstinline!a! et \lstinline!b!, le caractère \lstinline!§! permet de placer les produits/mots sur différentes lignes.
\begin{Codes}[]{0.5}{}
\DefiTableTexte{%
  14/56/12/64/21/*/30/56/*/12/56/18/12/25%ligne 1
  §27/48/64/48/7/*/21/42/25/25/48/64/42/*/56/64%ligne 2
  §40/36/42/56/18/*/12/56/*/30/12/28/20/42/12/56/45%
}{%
  quand*tu*auras
  §fini,*dessine*un
  §coeur*au*tableau.}
\end{Codes}
\begin{tcolorbox}[tikzcle]
  \index[cle]{DefiTable@\lstinline+\DefiTable+!LargeurT|mygobble}
  \index[cle]{DefiTable@\lstinline+\DefiTable+!Solution|mygobble}
\begin{Key}{LargeurT}{5mm}
  modifie la largeur des cases du texte réponse.
\end{Key}
\begin{Key}{Solution}{false}
  affiche la solution à obtenir.
\end{Key}
\end{tcolorbox}
\begin{Codes}[]{0.5}{}
\DefiTableTexte[LargeurT=3mm]{%
  14/56/12/64/21/*/30/56/*/12/56/18/12/25%ligne 1
  §27/48/64/48/7/*/21/42/25/25/48/64/42/*/56/64%ligne 2
  §40/36/42/56/18/*/12/56/*/30/12/28/20/42/12/56/45%
}{quand*tu*auras§fini,*dessine*un§coeur*au*tableau.}
\end{Codes}
\clearpage
\begin{Codes}[]{0.5}{}
\DefiTableTexte[Solution]{%
  14/56/12/64/21/*/30/56/*/12/56/18/12/25%ligne 1
  §27/48/64/48/7/*/21/42/25/25/48/64/42/*/56/64%ligne 2
  §40/36/42/56/18/*/12/56/*/30/12/28/20/42/12/56/45%
}{quand*tu*auras§fini,*dessine*un§coeur*au*tableau.}
\end{Codes}
%\clearpage
\subsection*{Création}
Même si créer manuellement une table de décodage peut permettre
d'insister sur telle ou telle table de multiplication, cela peut
représenter un travail fastidieux. On pourra le faire avec la clé
suivante.
\begin{tcolorbox}[tikzcle]
  \index[cle]{DefiTable@\lstinline+\DefiTable+!Creation|mygobble}
  \index[cle]{DefiTable@\lstinline+\DefiTable+!Creation!Solution|mygobble}
  \index[cle]{DefiTable@\lstinline+\DefiTable+!Creation!Graine|mygobble}
  \index[cle]{DefiTable@\lstinline+\DefiTable+!Creation!ValeurMin|mygobble}
  \index[cle]{DefiTable@\lstinline+\DefiTable+!Creation!ValeurMax|mygobble}
  \index[cle]{DefiTable@\lstinline+\DefiTable+!Creation!Restreint|mygobble}
\begin{Key}{Creation}{false}
  crée, en accord avec le texte à obtenir, une table de décodage
  aléatoire.
  \begin{SousDescription}
  \item[La clé \Cle{Solution}]\DefautR{false}
    permet d'afficher le texte à obtenir.
  \item[La clé \Cle{Graine}]\DefautR{\{\}}
    permet de fixer l'aléatoire afin que le tableau, le texte à remplir et l'affichage de la solution soient cohérents.
  \item[La clé \Cle{ValeurMin}]\DefautR{1} modifie la valeur minimale des facteurs.
  \item[La clé \Cle{ValeurMax}]\DefautR{10} modifie la valeur maximale des facteurs.
  \item[La clé \Cle{Restreint}]\DefautR{false} permet de \og raccourcir\fg{} la table de décodage aux colonnes comprises entre \lstinline!ValeurMin! et \lstinline!ValeurMax! incluses.\PfCMAJ{0.99-z-t}
    \begin{tcolorbox}[tikzRemarque]
      Le nombre de lettres de la phrase mystère doit être cohérent avec le nombre de produits possibles.
    \end{tcolorbox}
  \end{SousDescription}
\end{Key}
\end{tcolorbox}
\begin{Codes}[listing only]{0.4}{}
\DefiTable[Creation]{Après la pluie,\\le beau temps.}
\end{Codes}
\DefiTable[Creation]{Après la pluie,\\le beau temps.}
\begin{tcolorbox}[tikzRemarque]
  On remarquera la donnée directe de l'expression à obtenir.
\end{tcolorbox}
Afin d'afficher le jeu, on utilisera encore la commande
\lstinline!\DefiTableTexte! sous la forme :
\begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em]
  \DefiTableTexte[Creation,!\sffamily\textlangle clés\textrangle!]{}{expression à obtenir}
\end{lstlisting}
\begin{Codes}[listing only]{0.4}{}
\DefiTableTexte[Creation]{}{Après la pluie,\\le beau temps.}
\end{Codes}
\DefiTableTexte[Creation]{}{Après la pluie,\\le beau temps.}
\begin{Codes}[listing only]{0.4}{}
\DefiTableTexte[Creation,Graine=314]{}{Après la pluie,\\le beau temps.}

\DefiTableTexte[Creation,Graine=314,Solution]{}{Après la pluie,\\le beau temps.}
\end{Codes}
\DefiTableTexte[Creation,Graine=314]{}{Après la pluie,\\le beau temps.}

\DefiTableTexte[Creation,Graine=314,Solution]{}{Après la pluie,\\le beau temps.}
\begin{multicols}{2}
\begin{Codes}[listing only]{0.4}{}
\DefiTable[Creation,Graine=1,ValeurMin=3,ValeurMax=7]{Après la pluie,\\le beau temps.}
\end{Codes}
\DefiTable[Creation,Graine=1,ValeurMin=3,ValeurMax=7]{Après la pluie,\\le beau temps.}
\begin{Codes}[listing only]{0.4}{}
\DefiTable[Creation,Graine=1,Restreint,ValeurMin=3,ValeurMax=7]{Après la pluie,\\le beau temps.}
\end{Codes}
\DefiTable[Creation,Graine=1,Restreint,ValeurMin=3,ValeurMax=7]{Après la pluie,\\le beau temps.}
\end{multicols}