diff options
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCCryptarithme.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCCryptarithme.tex | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCCryptarithme.tex b/macros/latex/contrib/profcollege/latex/PfCCryptarithme.tex new file mode 100644 index 0000000000..bfa2e8c76a --- /dev/null +++ b/macros/latex/contrib/profcollege/latex/PfCCryptarithme.tex @@ -0,0 +1,110 @@ +%%% +% Cryptarithmes +%%% +\setKVdefault[Crypta]{Solution=false,ListeLettres={A,B,C,D,E,F,G,H,I,J},Tableau=false}% +\defKV[Crypta]{Indices=\setKV[Crypta]{Tableau}}% + +\colorlet{PfCCouleurVirgule}{black} + +\NewDocumentCommand\PfCRemplaceLettre{m}{% + \IfStrEqCase{#1}{% + {0}{\PfCCryptaListe[1]}% + {1}{\PfCCryptaListe[2]}% + {2}{\PfCCryptaListe[3]}% + {3}{\PfCCryptaListe[4]}% + {4}{\PfCCryptaListe[5]}% + {5}{\PfCCryptaListe[6]}% + {6}{\PfCCryptaListe[7]}% + {7}{\PfCCryptaListe[8]}% + {8}{\PfCCryptaListe[9]}% + {9}{\PfCCryptaListe[10]}% + }% +}% + +\NewDocumentCommand\PfCchiffrecrypta{m}{% + \ifboolKV[Crypta]{Solution}{#1}{\PfCRemplaceLettre{#1}}% +}% + +\NewDocumentCommand\PfCCryptaTestIndice{m}{% + \xintFor* ##1 in{\xintSeq{1}{\PfCCryptaListeIndicelen}}\do{% + \xintifboolexpr{\PfCCryptaListeIndice[##1]==#1}{\PfCRemplaceLettre{#1}\xintBreakFor}{}% + }% +}% + +\NewDocumentCommand\BuildCryptaTab{}{% + \xdef\PfCFooCryptaIndices{\useKV[Crypta]{Indices}}% + \setsepchar{,}% + \readlist*\PfCCryptaListeIndice{\PfCFooCryptaIndices}% + \begin{tabular}{|*{10}{c|}} + \hline + 0&1&2&3&4&5&6&7&8&9\\ + \hline + \PfCCryptaTestIndice{0}&\PfCCryptaTestIndice{1}&\PfCCryptaTestIndice{2}&\PfCCryptaTestIndice{3}&\PfCCryptaTestIndice{4}&\PfCCryptaTestIndice{5}&\PfCCryptaTestIndice{6}&\PfCCryptaTestIndice{7}&\PfCCryptaTestIndice{8}&\PfCCryptaTestIndice{9}\\% + \hline + \end{tabular} +}% + +\NewDocumentCommand\CryptarithmeAdd{omm}{% + \useKVdefault[Crypta]% + \setKV[Crypta]{#1}% + \xdef\PfCFooCryptaListe{\useKV[Crypta]{ListeLettres}}% + \setsepchar{,}% + \readlist*\PfCCryptaListe{\PfCFooCryptaListe}% + \ifboolKV[Crypta]{Solution}{\opset{carryadd}}{\opset{carryadd=false}}% + \begingroup + \setlength{\baselineskip}{1.75em} + \opset{lineheight=\baselineskip} % nécessaire + \opadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,operandstyle=\PfCchiffrecrypta,resultstyle=\PfCchiffrecrypta,operandstyle.1.d=\color{PfCCouleurVirgule},operandstyle.2.d=\color{PfCCouleurVirgule},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% + \endgroup + \ifboolKV[Crypta]{Tableau}{\\\BuildCryptaTab}{}% +}% + +\NewDocumentCommand\CryptarithmeMAdd{om}{% + \useKVdefault[Crypta]% + \setKV[Crypta]{#1}% + \xdef\PfCFooCryptaListe{\useKV[Crypta]{ListeLettres}}% + \setsepchar{,}% + \readlist*\PfCCryptaListe{\PfCFooCryptaListe}% + \ifboolKV[Crypta]{Solution}{\opset{carryadd}}{\opset{carryadd=false}}% + \opmanyadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,vmanyoperator=bottom,operandstyle=\PfCchiffrecrypta,resultstyle=\PfCchiffrecrypta,resultstyle.d=\color{PfCCouleurVirgule}]#2% + \ifboolKV[Crypta]{Tableau}{\\\BuildCryptaTab}{}% +}% + +\NewDocumentCommand\CryptarithmeSous{omm}{% + \useKVdefault[Crypta]% + \setKV[Crypta]{#1}% + \xdef\PfCFooCryptaListe{\useKV[Crypta]{ListeLettres}}% + \setsepchar{,}% + \readlist*\PfCCryptaListe{\PfCFooCryptaListe}% + \ifboolKV[Crypta]{Solution}{\opset{carrysub}}{\opset{carrysub=false}}% + \begingroup + \setlength{\baselineskip}{1.75em} + \opset{lineheight=\baselineskip} % nécessaire + \opsub[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,operandstyle=\PfCchiffrecrypta,resultstyle=\PfCchiffrecrypta,operandstyle.1.d=\color{PfCCouleurVirgule},operandstyle.2.d=\color{PfCCouleurVirgule},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% + \endgroup + \ifboolKV[Crypta]{Tableau}{\\\BuildCryptaTab}{}% +}% + +\NewDocumentCommand\CryptarithmeMul{omm}{% + \useKVdefault[Crypta]% + \setKV[Crypta]{#1}% + \xdef\PfCFooCryptaListe{\useKV[Crypta]{ListeLettres}}% + \setsepchar{,}% + \readlist*\PfCCryptaListe{\PfCFooCryptaListe}% + \begingroup + \setlength{\baselineskip}{1.75em} + \opset{lineheight=\baselineskip} % nécessaire + \opmul[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,operandstyle=\PfCchiffrecrypta,intermediarystyle=\PfCchiffrecrypta,resultstyle=\PfCchiffrecrypta,operandstyle.1.d=\color{PfCCouleurVirgule},operandstyle.2.d=\color{PfCCouleurVirgule},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% + \endgroup + \ifboolKV[Crypta]{Tableau}{\\\BuildCryptaTab}{}% +}% + +\NewDocumentCommand\CryptarithmeDiv{omm}{% + \useKVdefault[Crypta]% + \setKV[Crypta]{#1}% + \xdef\PfCFooCryptaListe{\useKV[Crypta]{ListeLettres}}% + \setsepchar{,}% + \readlist*\PfCCryptaListe{\PfCFooCryptaListe}% + \opidiv[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,displayintermediary=all,operandstyle=\PfCchiffrecrypta,intermediarystyle=\PfCchiffrecrypta,remainderstyle=\PfCchiffrecrypta,resultstyle=\PfCchiffrecrypta,operandstyle.1.d=\color{PfCCouleurVirgule},operandstyle.2.d=\color{PfCCouleurVirgule},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% + \ifboolKV[Crypta]{Tableau}{\\\BuildCryptaTab}{}% +}%
\ No newline at end of file |