summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCRepresenterEntier.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCRepresenterEntier.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCRepresenterEntier.tex150
1 files changed, 150 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCRepresenterEntier.tex b/macros/latex/contrib/profcollege/latex/PfCRepresenterEntier.tex
new file mode 100644
index 0000000000..714405a534
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCRepresenterEntier.tex
@@ -0,0 +1,150 @@
+%%%
+% Représenter un entier
+%%%
+\setKVdefault[ClesREntier]{Echelle=1,Unite=false,Compact=false,Impression=false,ListeCouleurs={Tomato,LightSteelBlue,LightGreen,Cornsilk}}%
+
+\newcommand\RepresenterEntier[2][]{%
+ \useKVdefault[ClesREntier]%
+ \setKV[ClesREntier]{#1}%
+ \ifboolKV[ClesREntier]{Unite}{%
+ \begin{Geometrie}[TypeTrace="Espace",CoinBG={u*(-10,-10)}]
+ Echelle=\useKV[ClesREntier]{Echelle};
+ Initialisation(5,30,15,50*Echelle);
+ color A,B,C,D,E,F,G,H;
+ pointilles:="non";
+ trace Pave(A,B,C,D,E,F,G,H)(0.1,0.1,0.1);
+ \end{Geometrie}
+ }{%
+ % On décompose le nombre
+ \StrLen{#2}[\LongueurNombreEntier]%
+ \xdef\FooListeEntier{}
+ \xintFor* ##1 in{\xintSeq{1}{\LongueurNombreEntier}}\do{%
+ \StrChar{#2}{##1}[\ChiffreAAjouter]
+ \xdef\FooListeEntier{\FooListeEntier \ChiffreAAjouter,}
+ }
+ \setsepchar{,}\ignoreemptyitems
+ \readlist*\ListeDesChiffres{\FooListeEntier}%
+ \xdef\ListeAvantCouleurs{\useKV[ClesREntier]{ListeCouleurs}}%
+ \readlist*\ListeCouleurEntier{\ListeAvantCouleurs}%
+ \xintifboolexpr{\LongueurNombreEntier==4}{%
+ \xdef\NombreMilliers{\ListeDesChiffres[1]}%
+ \xdef\NombreCentaines{\ListeDesChiffres[2]}%
+ \xdef\NombreDizaines{\ListeDesChiffres[3]}%
+ \xdef\NombreUnites{\ListeDesChiffres[4]}%
+ }{%
+ \xintifboolexpr{\LongueurNombreEntier==3}{%
+ \xdef\NombreMilliers{0}%
+ \xdef\NombreCentaines{\ListeDesChiffres[1]}%
+ \xdef\NombreDizaines{\ListeDesChiffres[2]}%
+ \xdef\NombreUnites{\ListeDesChiffres[3]}%
+ }{%
+ \xintifboolexpr{\LongueurNombreEntier==2}{%
+ \xdef\NombreMilliers{0}%
+ \xdef\NombreCentaines{0}%
+ \xdef\NombreDizaines{\ListeDesChiffres[1]}%
+ \xdef\NombreUnites{\ListeDesChiffres[2]}%
+ }{%
+ \xdef\NombreMilliers{0}%
+ \xdef\NombreCentaines{0}%
+ \xdef\NombreDizaines{0}%
+ \xdef\NombreUnites{\ListeDesChiffres[1]}%
+ }%
+ }%
+ }%
+ \begin{Geometrie}[TypeTrace="Espace",CoinBG={u*(-10,-10)},CoinHD={u*(20,20)}]
+ Echelle=\useKV[ClesREntier]{Echelle};
+ NM=\NombreMilliers;
+ NC=\NombreCentaines;
+ ND=\NombreDizaines;
+ NU=\NombreUnites;
+ color ColorEntier[];
+ ColorEntier1=\ListeCouleurEntier[1];
+ ColorEntier2=\ListeCouleurEntier[2];
+ ColorEntier3=\ListeCouleurEntier[3];
+ ColorEntier4=\ListeCouleurEntier[4];
+ boolean Compact,Print;
+ Compact=\useKV[ClesREntier]{Compact};
+ Print=\useKV[ClesREntier]{Impression};
+ Initialisation(5,30,15,50*Echelle);
+ color A,B,C,D,E,F,G,H;
+ picture TypePave[];
+ TypePave0=image(
+ trace Pave(A,B,C,D,E,F,G,H)(1,1,1);
+ currentpicture:=nullpicture;
+ remplis polygone(A,B,C,H,E,F) withcolor if Print : blanc else: ColorEntier1 fi;
+ for k=0 upto 10:
+ trace chemin((k/10)[A,B],(k/10)[F,G],(k/10)[E,H]);
+ endfor;
+ for k=0 upto 10:
+ trace chemin((k/10)[B,C],(k/10)[G,H],(k/10)[F,E]);
+ endfor;
+ for k=0 upto 10:
+ trace chemin((k/10)[A,F],(k/10)[B,G],(k/10)[C,H]);
+ endfor;
+ );
+ color A,B,C,D,E,F,G,H;
+ TypePave1=image(
+ trace Pave(A,B,C,D,E,F,G,H)(0.1,1,1);
+ currentpicture:=nullpicture;
+ remplis polygone(A,B,C,H,E,F) withcolor if Print : blanc else: ColorEntier2 fi;
+ trace chemin(C,H,E);
+ for k=0 upto 10:
+ trace chemin((k/10)[A,B],(k/10)[F,G],(k/10)[E,H]);
+ endfor;
+ for k=0 upto 10:
+ trace chemin((k/10)[A,F],(k/10)[B,G],(k/10)[C,H]);
+ endfor;
+ );
+ color A,B,C,D,E,F,G,H;
+ TypePave2=image(
+ trace Pave(A,B,C,D,E,F,G,H)(0.1,0.1,1);
+ currentpicture:=nullpicture;
+ remplis polygone(A,B,C,H,E,F) withcolor if Print : blanc else: ColorEntier3 fi;
+ trace chemin(C,H,E);
+ trace chemin(A,F,E);
+ trace chemin(B,G,F);
+ for k=0 upto 10:
+ trace chemin((k/10)[A,F],(k/10)[B,G],(k/10)[C,H]);
+ endfor;
+ );
+ color A,B,C,D,E,F,G,H;
+ TypePave3=image(
+ trace Pave(A,B,C,D,E,F,G,H)(0.1,0.1,0.1);
+ currentpicture:=nullpicture;
+ remplis polygone(A,B,C,H,E,F) withcolor if Print : blanc else: ColorEntier4 fi;
+ trace chemin(C,H,E);
+ trace chemin(A,F,E);
+ trace chemin(A,B,C);
+ trace chemin(F,G,H);
+ trace chemin(B,G);
+ );
+ if Compact:
+ for k=0 upto (\NombreMilliers-1):
+ trace TypePave0 shifted ((Projette((k,0,0))-Projette((0,0,0))));
+ endfor;
+ for k=0 upto (\NombreCentaines-1):
+ trace TypePave1 shifted ((Projette((0.1*k,1.5,0))-Projette((0,0,0))));
+ endfor;
+ for k=0 upto (\NombreDizaines-1):
+ trace TypePave2 shifted ((Projette((0.1*k,3,0))-Projette((0,0,0))));
+ endfor;
+ for k=0 upto (\NombreUnites-1):
+ trace TypePave3 shifted ((Projette((0,3.6,0.1*k))-Projette((0,0,0))));
+ endfor;
+ else:
+ for k=0 upto (\NombreMilliers-1):
+ trace TypePave0 shifted ((Projette((0,1.1*(k-1),0))-Projette((0,0,0))));
+ endfor;
+ for k=0 upto (\NombreCentaines-1):
+ trace TypePave1 shifted ((Projette((0,1.1*\NombreMilliers+1.1*(k-1),0))-Projette((0,0,0))));
+ endfor;
+ for k=0 upto (\NombreDizaines-1):
+ trace TypePave2 shifted ((Projette((0,1.1*\NombreMilliers+1.1*(\NombreCentaines-1)+0.2+0.2*(k-1),0))-Projette((0,0,0))));
+ endfor;
+ for k=0 upto (\NombreUnites-1):
+ trace TypePave3 shifted ((Projette((0,1.1*\NombreMilliers+1.1*(\NombreCentaines-1)+0.2+0.2*(\NombreDizaines-1),0.2*(k)))-Projette((0,0,0))));
+ endfor;
+ fi;
+ \end{Geometrie}
+ }
+} \ No newline at end of file