diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex new file mode 100644 index 00000000000..714405a5345 --- /dev/null +++ b/Master/texmf-dist/tex/latex/profcollege/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 |