# Commande principale: jeueuclide pour leçon :numéro :numtotal :numpartiel donne "enautonomie "faux donne "Total :numtotal donne "Partiel :numpartiel donne "noménoncé mot "énoncé :numéro ftd [900 650] ve ct vt fsep 0.9 soit "consigne (ph :noménoncé :Total :Partiel) execute :consigne affénoncé unjeu 1 4 :Total :Partiel 0 fin pour jeudiv reglagejeudiv ftd [900 650] ve ct vt fsep 0.9 soit "consigne (ph :noménoncé :Total :Partiel) execute :consigne affénoncé unjeu 1 4 :Total :Partiel 0 fin pour jeueuclide affrègles dprop "score "valeur 0 dprop "score "plus 0 lancejeudiv fin pour affrègles ftd [900 650] ve ct vt fsep 0.9 lc ct ftp 16 soit "numpol prem np fnp rechpolice fcc bleu fpos [-220 200] etiquette [Jeu du Père Euclide] fpos [-400 200] retourchariot 50 etiquette [Tu vas devoir résoudre des petits problèmes. Tu ne seras pas obligé de donner la réponse du premier coup.] retourchariot 40 etiquette [Tu pourras construire la réponse en une, deux, trois ou quatre fois successives.] retourchariot 40 etiquette [Chaque fois que tu trouves la réponse, tu gagnes des points ... 4 points si tu réponds juste du premier coup,] retourchariot 24 etiquette [mais un seul point si tu as besoin des 4 fois successives pour répondre correctement.] retourchariot 40 etiquette [Tu peux donc augmenter ton score, de problème en problème. Tu n'as pas de limite de temps.] retourchariot 40 etiquette [Un dernier point important : quand tu dois saisir une valeur numérique au clavier, utilise les touches numériques] retourchariot 24 etiquette [ et les trois touches suivantes :] retourchariot 24 etiquette (ph [Touche ] car 91 [<-] car 93 [pour annuler la dernière frappe. Touche] car 91 [Entrée] car 93 [ou touche] car 91 [Echap] car 93 [pour valider la saisie.]) retourchariot 24 etiquette (ph [Si tu valides ta saisie avec la touche] car 91 [Echap] car 93 [tu indiques aussi à l'ordinateur que tu as fini de répondre, tandis que]) retourchariot 24 etiquette (ph [si tu valides ta saisie avec la touche] car 91 [Entrée] car 93 [tu lui indiques que ta réponse sera complétée la prochaine fois.]) soit "laphrase [Quand tu as bien lu cette règle, appuie sur une touche quelconque pour lancer le jeu.] retourchariot 40 etiquette :laphrase fixex somme ( -220) le :laphrase soit "oldcap cap cercle 24 attendsclav fixecap :oldcap ve fnp :numpol fin pour lancejeudiv jeudiv si onrejoue? [lancejeudiv] [ec [Pour rejouer une prochaine fois, lancez la procédure jeuEuclide en tapant son nom dans la ligne de commande.]] fin pour reglagejeudiv donne "Total somme 125 hasard 576 # va varier entre 125 et 700 donne "Partiel somme 8 hasard quotient :total 16 #va varier de [8 ... 15] jusqu'à [8 ... 51] donne "noménoncé mot "énoncé 1 +hasard 7 donne "enautonomie "vrai # utile pour certains énoncés. Voir aussi la procédure leçon fin pour affénoncé lc ct ftp 16 donnelocale "numpol prem np fnp rechpolice fcc rougefonce fpos [-425 295] bc etiquette :phrase0 lc fpos [-425 275] bc etiquette :phrase1 lc fpos [-425 255] bc etiquette :phrase2 lc fpos [-440 320] bc fpos [440 320] fpos [440 240] fpos [-440 240] fpos [-440 320] lc fpos [ -425 240] fnp :numpol fin pour unjeu :numset :maxset :total :numtas :tournées # :numset = numéro de la distribution de 1 à :maxset # :total = nombre de billes à distribuer # :numtas = nombre de tas que l'on doit constituer régulièrement # :tournées = nombre des tournées effectuées entre 0 et quotient :total :numtas si :numset > :maxset [finjeu :total :numtas :tournées stop] dprop "score "plus difference (:maxset + 1) :numset si egal? reste :numset 2 1 [fcc violet] [fcc marron] retourchariot 30 bc etiquette (ph :nomtournée "numéro :numset) si egal? 1 :numset [donnelocale "laphrase3 :phrase3] [ soit "phrase3 (ph :semiphrase3G :tournées [x] :numtas [=] produit :tournées :numtas :semiphrase3D)] retourchariot 20 etiquette :phrase3 retourchariot 20 etiquette :phrase4 soit "oldpos pos # debut de la phase de saisie du quotient désiré soit "deltax le :phrase4 lc fixex (somme prem pos :deltax 20) xplik_saisie soit "lquota inputnum soit "quota der :lquota soit "newdistrib :quota * :numtas # quantité distribuée lors de cette tournée vt fpos :oldpos retourchariot 30 si :newdistrib + (:numtas * :tournées) > :total [dprop "score "plus 0 tropfort :total :numtas (:tournées + :quota) stop] # il restait des billes à distribuer et l'enfant à fixé une valeur compatible avec les données. # donne "semiphrase6g (ph [A l'issue de cette tournée, chacun des] :numtas [tas a reçu]) donne "semiphrase6m [billes. Mais il reste encore] donne "semiphrase6d [billes à distribuer.] soit "newtournées somme :quota :tournées etiquette (ph :semiphrase6g :newtournées :semiphrase6m (:total - produit :numtas :newtournées) :semiphrase6d) si egal? prem :lquota "Echap [soit "nextrang :maxset + 1] [soit "nextrang :numset + 1 attends 30] #on bloque pendant 3 secondes le pgm unjeu :nextrang :maxset :total :numtas :newtournées fin pour finjeu :tl :ntas :ntour fcc vertfonce retourchariot 30 si egal? :ntour quotient :tl :ntas [etiquette :phrase7] [dprop "score "plus 0 etiquette :phrase8] retourchariot 24 etiquette :phrase9 si :enAutonomie = "Vrai [retourchariot 24 etiquette [*** Fin de cette partie ! ***]] fin pour tropfort :tt :nt :distr fcc magenta etiquette (ph :semiphrase5G :distr :semiphrase5m) retourchariot 24 etiquette :semiphrase5d retourchariot 24 etiquette :phrase9 si :enAutonomie = "Vrai [retourchariot 24 etiquette [*** Fin de cette partie ! ***]] fin pour onrejoue? dprop "score "valeur somme rprop "score "valeur rprop "score "plus retourchariot 24 fcc noir etiquette ph [score :=] rprop "score "valeur retourchariot 24 fcc orange etiquette (ph [Pour rejouer : touche] car 91 "O car 93 "ou car 91 "Enter car 93 [/ Pour abandonner : touche] car 91 "N car 93 "ou car 91 "Esc car 93) ret ecouteON fin pour ecouteon soit "codetouche liscar si (ou :codetouche = 79 :codetouche = 111 :codetouche = 10) [ret "vrai] si (ou :codetouche = 78 :codetouche = 110 :codetouche = 27) [ret "faux] [ret ecouteON] fin pour inputnum donne "frappe "0 ftc 2*tp # taille de la gomme = taille de la police ret iptn fin pour iptn soit "x0 prem pos etiquette :frappe soit "codetouche liscar si :codetouche = 10 [ret liste "Valid :frappe] si :codetouche = 27 [ret liste "Echap :frappe] soit "xbout somme :x0 le :frappe gomme fixex :xbout de lc fixex :x0 si :codetouche = 8 [donne "frappe otchiffre :frappe] si et (:codetouche < 58) (:codetouche > 47) [donne "frappe ajchiffre car :codetouche :frappe] etiquette :frappe ret iptn fin pour ajchiffre :chiffre :motnombre si egal? 0 :motnombre [ret :chiffre] [ret mot :motnombre :chiffre] fin pour otchiffre :motnombre soit "temp sd :motnombre si vide? :temp [ret "0] [ret :temp] fin pour rechpolice soit "newnp appelrchpol 0 100 "Arial 0 # on est certain que cette police existe ret appelrchpol 0 100 "Calibri :newnp # mais c'est celle-là que l'on veut fin pour appelrchpol :nmpl :delta :pol1 :numxpol soit "resultat rchpol :nmpl (:nmpl + :delta) :pol1 :numxpol si egal? -1 :resultat [ret :numxpol] # on a tout listé, sans succès si egal? -20 :resultat [ret appelrchpol (:nmpl + :delta) :delta :pol1 :numxpol] # sur le tronçon listé, on a pas trouvé ret :resultat fin pour rchpol :nmpl :nmax :pol1 :numxpol si :nmpl > :nmax [ret -20] # on veut pas déborder la pile un peu faible de xlogo soit "oldnp prem np fnp :nmpl soit "lapol np soit "rangpol prem :lapol fnp :oldnp si non egal? :rangpol :nmpl [ret -1] # on a bouclé sans trouver la police :pol1 -- calibri en pratique si egal? prem der :lapol :pol1 [ret :nmpl] # on a trouvé le nom correspondant à la police principale cherchée ret rchpol (1 + :nmpl) :nmax :pol1 :numxpol fin pour retourchariot :pix lc fpos liste prem pos difference der pos :pix #(-420) fin pour attendsclav si touche? [ vidangeclav stop] td 4 mt attends 2 ct attends 2 attendsclav fin pour vidangeclav si non touche? [stop] soit "codetouche liscar vidangeclav fin pour xplik_saisie vt soit "oldct ctexte fct rouge ec (ph [Saisie d'un nombre attendue par l'ordinateur. Touches autorisées :] car 91 "0 car 93 car 91 [...] car 93 car 91 "9 car 93 [touche] car 91 [<-] car 93 ) ec (ph [Pour valider la saisie : touche ] car 91 [Enter] car 93 [et le jeu continue ensuite ou touche ] car 91 [Esc] car 93 [et le jeu s'arrête après traitement de la saisie.]) fct :oldct fin pour énoncé1 :card :numtas donne "nomtournée "Tournée donne "phrase0 (ph [Tu dois répartir des billes dans] :numtas [tas, en une, deux, trois ou quatre tournées.] ) donne "phrase1 (ph [Tu disposes de] :card [billes au début. Tu dois en distribuer le plus possible parmi ces] :numtas [tas de billes.]) donne "phrase2 (ph [A la fin de la répartition, il peut rester quelques billes, mais pas plus que] (:numtas - 1) [billes. Tous les tas devront être égaux.]) donne "phrase3 (ph [Tu n'as encore rien distribué dans les] :numtas [tas de billes.]) donne "semiphrase3G [Tu as déjà distribué] donne "semiphrase3d (ph [billes également dans les] :numtas [tas de billes.]) donne "phrase4 (ph [Combien de billes veux-tu donner à chacun des] :numtas [tas :]) donne "semiphrase5g [Tu as voulu distribuer] donne "semiphrase5m (ph [billes à chacun des] :numtas [tas de billes.]) donne "semiphrase5d (ph [Mais cela n'est pas possible car tu n'as que] :card [billes. Tu ne peux distribuer à chacun que] quotient :card :numtas [billes et il t'en restera] reste :card :numtas) donne "semiphrase6g (ph [A l'issue de cette tournée, chacun des] :numtas [tas a reçu]) donne "semiphrase6m [billes.Il reste] donne "semiphrase6d [bille(s) qu'il faut peut-être distribuer.] donne "phrase7 (ph [Bravo! tu as correctement distribué les] :card [billes également dans les] :numtas [tas de billes.]) donne "phrase8 (ph [Dommage : Tu n'as pas distribué au mieux les] :card [billes dans les] :numtas [tas de billes.]) donne "phrase9 (ph [ . . . . . . . . . . . . . . Observe bien :] :card [=] :numtas [x] quotient :card :numtas [+] reste :card :numtas) fin pour énoncé2 :card :numtas donne "nomtournée "Vidange si :enAutonomie = "vrai [donne "Total 2 * :Total donne "card :Total] donne "phrase0 (ph [Tu dois vider une citerne dans] :numtas [réservoirs, en une, deux, trois ou quatre fois.] ) donne "phrase1 (ph [La citerne contient] :card [hectolitres au début. Tu dois la vider le mieux possible parmi ces] :numtas [réservoirs.]) donne "phrase2 (ph [A la fin de la vidange, il peut rester quelques hectolitres, mais pas plus que] (:numtas - 1) [hectolitres.]) donne "phrase3 (ph [Tu n'as encore rien vidé dans les] :numtas [réservoirs.]) donne "semiphrase3G [Tu as déjà vidé] donne "semiphrase3d (ph [hectolitres également dans les] :numtas [réservoirs.]) donne "phrase4 (ph [Combien d'hectolitres veux-tu vider dans chacun des] :numtas [réservoirs :]) donne "semiphrase5g [Tu as voulu distribuer] donne "semiphrase5m (ph [hectolitres à chacun des] :numtas [réservoirs.]) donne "semiphrase5d (ph [Mais cela est impossible car tu n'as que] :card [hectolitres. Tu ne peux vider dans chacun que] quotient :card :numtas [hectolitres et il t'en restera] reste :card :numtas) donne "semiphrase6g (ph [A l'issue de cette vidange, chacun des] :numtas [réservoirs a reçu]) donne "semiphrase6m [hectolitres.Il reste] donne "semiphrase6d [hectolitre(s) , à vidanger peut-être.] donne "phrase7 (ph [Bravo! tu as correctement vidé les] :card [hectolitres également dans les] :numtas [réservoirs.]) donne "phrase8 (ph [Dommage : Tu n'as pas vidé au mieux les] :card [hectolitres dans les] :numtas [réservoirs.]) donne "phrase9 (ph [ . . . . . . . . . . . . . . Observe bien :] :card [=] :numtas [x] quotient :card :numtas [+] reste :card :numtas) fin pour énoncé3 :distance :sautunitaire donne "nomtournée "Etape si :enAutonomie = "vrai [donne "sautunitaire quotient :sautunitaire 2 donne "Partiel :sautunitaire] donne "phrase0 (ph [Tu dois essayer de parcourir] :distance [kilomètres, en une, deux, trois ou quatre étapes, grâce à ton supersauteur.] ) donne "phrase1 (ph [A chaque étape, tu fais un ou plusieurs bonds de ] :sautunitaire [kilomètres chacun.]) donne "phrase2 (ph [A l'issue de la dernière étape, il peut te rester quelques kilomètres à parcourir à pied, mais pas plus que] (:sautunitaire - 1) [kilomètres.]) donne "phrase3 (ph [Tu n'as encore fait aucun bond de] :sautunitaire [kilomètres.]) donne "semiphrase3G [Tu as déjà parcouru] donne "semiphrase3d [kilomètres.] donne "phrase4 (ph [Combien de saut (s) de] :sautunitaire [kilomètres, veux-tu effectuer avec ton supersauteur :]) donne "semiphrase5g [Tu as voulu faire] donne "semiphrase5m (ph [bond (s) de] :sautunitaire [kilomètres chacun.]) donne "semiphrase5d (ph [Mais cela est impossible car tu n'as que] :distance [km à parcourir en] quotient :distance :sautunitaire [bonds de] :sautunitaire [km et il te restera] reste :distance :sautunitaire [km à faire à pied]) donne "semiphrase6g [A l'issue de cette étape, tu as réalisé] donne "semiphrase6m (ph [bonds de ] :sautunitaire [kilomètres. Il te reste à parcourir]) donne "semiphrase6d [kilomètre(s) .] donne "phrase7 (ph [Bravo! tu as parcourru au mieux les] :distance [kilomètres, en faisant des bonds de] :sautunitaire [kilomètres.]) donne "phrase8 (ph [Dommage : Tu n'as pas parcouru au mieux les] :distance [kilomètres par sauts de] :sautunitaire [kilomètres à chaque fois.]) donne "phrase9 (ph [ . . . . . . . . . . . . . . Observe bien :]:distance [=] :sautunitaire [x] quotient :distance :sautunitaire [+] reste :distance :sautunitaire) fin pour énoncé4 :card :numtas donne "nomtournée "Distribution si :enAutonomie = "vrai [donne "Partiel item (1 + hasard 4) [6 10 12 20] donne "numtas :Partiel] donne "phrase0 (ph [Tu dois remplir des boîtes de] :numtas [oeufs chacune, en une, deux, trois ou quatre distributions.] ) donne "phrase1 (ph [Tu disposes de] :card [oeufs au début. Tu dois remplir le plus possible de ces boites de] :numtas [oeufs.]) donne "phrase2 (ph [A la fin de la répartition, il peut rester quelques oeufs, mais pas plus que] (:numtas - 1) [oeufs. Tous les boites seront également remplies.]) donne "phrase3 (ph [Tu n'as encore rempli aucune boîte de] :numtas [oeufs.]) donne "semiphrase3G [Tu as déjà déposé] donne "semiphrase3d (ph [oeufs également dans les boites de] :numtas [oeufs.]) donne "phrase4 (ph [Combien de boites de] :numtas [oeufs veux-tu remplir :]) donne "semiphrase5g [Tu as voulu remplir] donne "semiphrase5m (ph [billes à chacun des] :numtas [tas de billes.]) donne "semiphrase5d (ph [Mais cela n'est pas possible car tu n'as que] :card [oeufs. Tu ne peux remplir que] quotient :card :numtas [boites de] :numtas [oeufs et il t'en restera] reste :card :numtas) donne "semiphrase6g [Tu viens de remplir] donne "semiphrase6m (ph [boites de] :numtas [oeufs.Il reste]) donne "semiphrase6d [oeuf(s) qu'il faut peut-être distribuer.] donne "phrase7 (ph [Bravo! tu as correctement distribué les] :card [oeufs également en boite de] :numtas [oeufs.]) donne "phrase8 (ph [Dommage : Tu n'as pas distribué au mieux les] :card [oeufs dans les boîtes de] :numtas [oeufs.]) donne "phrase9 (ph [ . . . . . . . . . . . . . . Observe bien :] :card [=] :numtas [x] quotient :card :numtas [+] reste :card :numtas) fin pour énoncé5 :card :numtas donne "nomtournée "Distribution si :enAutonomie = "vrai [donne "Partiel item (1 + hasard 4) [36 45 72 90] donne "numtas :Partiel donne "Total somme :numtas * (17 + hasard 17) hasard :numtas donne "card :Partiel] donne "phrase0 (ph [Aide le fermier à disposer ses oeufs dans] :numtas [plateaux, en une, deux, trois ou quatre distributions.] ) donne "phrase1 (ph [Il a ramassé] :card [oeufs en tout. Il doit en déposer le plus possible parmi ces] :numtas [plateaux, mais de façon égale.]) donne "phrase2 (ph [A la fin de son travail, il peut lui rester quelques oeufs, mais pas plus que] (:numtas - 1) [. ]) donne "phrase3 (ph [Le fermier n'a encore rien déposé dans les] :numtas [plateaux.]) donne "semiphrase3G [Le fermier a déjà déposé] donne "semiphrase3d (ph [oeufs également dans les] :numtas [plateaux.]) donne "phrase4 (ph [Combien d'oeufs lui suggère-tu de déposer sur chacun des] :numtas [plateaux :]) donne "semiphrase5g [Tu as proposé de déposer] donne "semiphrase5m (ph [oeufs sur chacun des] :numtas [plateaux.]) donne "semiphrase5d (ph [Cela n'est pas possible : le fermier ne possède que] :card [oeufs. Il déposera] quotient :card :numtas [oeufs par plateau ; il lui en restera] reste :card :numtas) donne "semiphrase6g (ph [A l'issue de cette tournée, chacun des] :numtas [plateaux a reçu]) donne "semiphrase6m [oeufs. Il reste à distribuer] donne "semiphrase6d [oeuf(s).] donne "phrase7 (ph [Bravo! tu as bien aidé le fermier à déposer les] :card [oeufs également sur les] :numtas [plateaux.]) donne "phrase8 (ph [Dommage : Le fermier n'a pas déposé au mieux les] :card [oeufs sur les] :numtas [plateaux.]) donne "phrase9 (ph [ . . . . . . . . . . . . . . Observe bien :] :card [=] :numtas [x] quotient :card :numtas [+] reste :card :numtas) fin pour énoncé6 :distance :sautunitaire si :enAutonomie = "vrai [donne "Total 12000 * (1 + hasard 6) + hasard 9999 donne "distance :Total donne "Partiel (16 + hasard 7 + hasard 17 + hasard 27 + hasard 37) donne "sautunitaire :Partiel] donne "nomtournée "Etape donne "phrase0 (ph [Le pétrolier veut construire un oléoduc de] :distance [kilomètres, en une, deux, trois ou quatre étapes.] ) donne "phrase1 (ph [Pour cela il pose bout à bout des tronçons de ] :sautunitaire [km chacun grâce à une machine spéciale.]) donne "phrase2 (ph [A l'issue de la dernière étape, il peut lui rester quelques km à construire sans machine, mais pas plus que] (:sautunitaire - 1) [km.]) donne "phrase3 (ph [Le pétrolier n'a encore posé aucun tronçon de] :sautunitaire [kilomètres de long.]) donne "semiphrase3G [Le pétrolier a déjà posé] donne "semiphrase3d [kilomètres d'oléoduc.] donne "phrase4 (ph [Combien de tronçon (s) de] :sautunitaire [kilomètres, suggère-tu au pétrolier de poser :]) donne "semiphrase5g [Tu as suggéré de poser] donne "semiphrase5m (ph [tronçon (s) de] :sautunitaire [kilomètres chacun.]) donne "semiphrase5d (ph [Cela est impossible : l'oléoduc mesure] :distance [km ; il suffit de ] quotient :distance :sautunitaire [tronçons de] :sautunitaire [km de long, plus] reste :distance :sautunitaire [km à faire à la main.]) donne "semiphrase6g [A l'issue de cette étape, le pétrolier a posé] donne "semiphrase6m (ph [tronçons de ] :sautunitaire [km. Il lui reste à bâtir]) donne "semiphrase6d [kilomètre(s) .] donne "phrase7 (ph [Bravo! tu as aidé au mieux le pétrolier à bâtir l'oléoduc de] :distance [km, en posant des tronçons de] :sautunitaire [km.]) donne "phrase8 (ph [Dommage : Le pétrolier n'a pas pu construire son oléoduc de] :distance [km de long en posant des tronçons de] :sautunitaire [km .]) donne "phrase9 (ph [ . . . . . . . . . . . . . . Observe bien :]:distance [=] :sautunitaire [x] quotient :distance :sautunitaire [+] reste :distance :sautunitaire) fin pour énoncé7 :prixttc :prixunitaire si :enAutonomie = "vrai [donne "Partiel (12 + hasard 10) donne "prixunitaire :Partiel donne "prixttc somme (produit :partiel (20 + hasard 31)) hasard :partiel donne "Total :prixttc ] donne "nomtournée "Achat donne "phrase0 (ph [Tu disposes de ] :prixttc [euros pour acheter des livres, en une, deux, trois ou quatre fois.] ) donne "phrase1 (ph [Chaque livre coûte] :prixunitaire [euros. Tu dois acheter le plus possible de livres à ce prix.]) donne "phrase2 (ph [A la fin des achats, il peut te rester quelques euros, mais pas plus que] (:prixunitaire - 1) [euros.]) donne "phrase3 (ph [Tu n'as encore acheté aucun livre à] :prixunitaire [euros pièce.]) donne "semiphrase3G [Tu as déjà acheté pour] donne "semiphrase3d (ph [euros de livres à] :prixunitaire [euros pièce.]) donne "phrase4 (ph [Combien de livres à] :prixunitaire [euros pièce veux -tu acheter :]) donne "semiphrase5g [Tu as voulu acheter] donne "semiphrase5m (ph [livres à] :prixunitaire [euros pièce.]) donne "semiphrase5d (ph [Mais cela n'est pas possible car tu n'as que] :prixttc [euros. Tu ne peux acheter que] quotient :prixttc :prixunitaire [livres et il te restera] reste :prixttc :prixunitaire [euros dans la poche.]) donne "semiphrase6g [Au total tu as acheté] donne "semiphrase6m (ph [livres à] :prixunitaire [euros pièce. Il te reste]) donne "semiphrase6d [euro(s) à dépenser éventuellement.] donne "phrase7 (ph [Bravo! tu as bien dépensé les] :prixttc [euros en achetant] quotient :prixttc :prixunitaire [livres et il te reste] reste :prixttc :prixunitaire [euros en poche.]) donne "phrase8 (ph [Dommage : Tu n'as pas dépensé au mieux les] :prixttc [euros pour l'achat de livres à] :prixunitaire [euros pièce.]) donne "phrase9 (ph [ . . . . . . . . . . . . . . Observe bien :] :prixttc [=] :prixunitaire [x] quotient :prixttc :prixunitaire [+] reste :prixttc :prixunitaire) fin pour m9 :x donne "oldtpt tpt ftpt 32 ec sm9 mp :x [] 1 :x ftpt :oldtpt fin pour sm9 :l :c :x si :c > 9 [ret :l] donnelocale "nx somme der :l :x ret sm9 md :nx :l (1 + :c) :x fin