From 0ef3dfaccca426fb0f3b06fc106ef9b5b0423dad Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 23 Aug 2021 03:00:54 +0000 Subject: CTAN sync 202108230300 --- .../contrib/profcollege/metapost/PfCLabyNombre.mp | 211 +++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp (limited to 'macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp') diff --git a/macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp b/macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp new file mode 100644 index 0000000000..e6877ef34e --- /dev/null +++ b/macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp @@ -0,0 +1,211 @@ +%Pile des cases du chemin +pair PileChemin[]; +numeric indiceChemin; +indiceChemin=0; + +vardef RAZPileChemin= + pair PileChemin[]; + indiceChemin:=0; +enddef; + +def PushChemin(expr tt)= + if indiceChemin<1: + PileChemin[1]:=tt; + indiceChemin:=1; + else: + PileChemin[indiceChemin+1]:=tt; + indiceChemin:=indiceChemin+1; + fi; +enddef; + +def PopChemin= + if indiceChemin<1: + RAZPileChemin; + for k=-1 upto LargeurLaby: + for l=-1 upto LongueurLaby: + if (k=-1) or (k=LargeurLaby) or (l=-1) or (l=LongueurLaby): + CaseExploree[k][l]:=true; + else: + CaseExploree[k][l]:=false; + fi; + endfor; + endfor; + Mobile:=Depart; + PushChemin((choixligneD,choixcolonneD)); + CaseExploree[choixligneD][choixcolonneD]:=true; + VoisinDispo(choixligneD,choixcolonneD); + else: + if indiceChemin>0: + CaseExploree[xpart(PileChemin[indiceChemin])][ypart(PileChemin[indiceChemin])]:=true; + fi; + indiceChemin:=indiceChemin-1; + fi; +enddef; + +%Pile des cases voisines de la case parcourue +pair PileVoisin[]; +numeric indiceVoisin; +indiceVoisin=0; + +vardef RAZPileVoisin= + indiceVoisin:=0; +enddef; + +def PushVoisin(expr tt)= + if indiceVoisin<1: + PileVoisin[1]:=tt; + indiceVoisin:=1; + else: + PileVoisin[indiceVoisin+1]:=tt; + indiceVoisin:=indiceVoisin+1; + fi; +enddef; + +def PopVoisin= + if indiceVoisin<0: + %message("La pile n'existe pas"); + else: + indiceVoisin:=indiceVoisin-1; + fi; +enddef; + +vardef VoisinDispo(expr la,lo)= + RAZPileVoisin; + numeric nbvoisin; + nbvoisin=0; + if (la>-1) and (la-1) and (lo