summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCKakuro.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCKakuro.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCKakuro.tex51
1 files changed, 51 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCKakuro.tex b/macros/latex/contrib/profcollege/latex/PfCKakuro.tex
new file mode 100644
index 0000000000..9f2d7bf47a
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCKakuro.tex
@@ -0,0 +1,51 @@
+%%%
+% Kakuro
+%%%
+\setKVdefault[Kakuro]{CouleurCase=LightGray,TLargeur=5,THauteur=5,Solution=false,Largeur=2em,Aide=false,CouleurSolution=Black,Tailles=false}%,Taille=5
+\defKV[Kakuro]{ListeNombres=\setKV[Kakuro]{Aide}}%
+\defKV[Kakuro]{Taille=\setKV[Kakuro]{Tailles}}%
+
+\newlength\PfCKakuro%
+
+\NewDocumentCommand\Kakuro{o m}{%
+ \useKVdefault[Kakuro]%
+ \setKV[Kakuro]{#1}%
+ \ifboolKV[Kakuro]{Tailles}{%
+ \setKV[Kakuro]{THauteur=\useKV[Kakuro]{Taille}}%
+ \setKV[Kakuro]{TLargeur=\useKV[Kakuro]{Taille}}%
+ }{}%
+ \setlength{\PfCKakuro}{\useKV[Kakuro]{Largeur}+\tabcolsep}%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeCasesKK{#2}%
+ \setsepchar{,}%
+ \xdef\ListeAvantNombres{\useKV[Kakuro]{ListeNombres}}%
+ \readlist*\ListeKakuroNombres{\ListeAvantNombres}%
+ \savecomparemode%
+ \comparestrict%
+ \begin{NiceTabular}{*{\useKV[Kakuro]{TLargeur}}{m{\useKV[Kakuro]{Largeur}}}}[hvlines]
+ \xintFor* ##1 in {\xintSeq{0}{\fpeval{\useKV[Kakuro]{THauteur}-1}}}\do{%
+ \xintFor* ##2 in {\xintSeq{1}{\useKV[Kakuro]{TLargeur}}}\do{%
+ \rule{0pt}{\PfCKakuro}%
+ \StrCompare{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}{*}[\PfCTestBlack]
+ \xintifboolexpr{\PfCTestBlack==0}{%
+ \Block[fill=black]{1-1}{}%
+ }{%
+ \xintifboolexpr{\listlen\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2}]==2}{
+ \Block[fill=\useKV[Kakuro]{CouleurCase}]{1-1}{\diagbox{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},2]}}%
+ }{%
+ \Block{1-1}{\ifboolKV[Kakuro]{Solution}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}}{%
+ \ifboolKV[Kakuro]{Aide}{%
+ \xintFor* ##3 in{\xintSeq{1}{\ListeKakuroNombreslen}}\do{%
+ \Block{1-1}{\xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]==\ListeKakuroNombres[##3]}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}}{}}%
+ }%
+ }{}%
+ }%
+ }%
+ }%
+ }%
+ \xintifForLast{\\}{&}%
+ }%
+ }%
+ \end{NiceTabular}
+ \restorecomparemode%
+}% \ No newline at end of file