Tester l'algorithme :


(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)

Résultats :

Code de l'algorithme :
1     VARIABLES
2       i EST_DU_TYPE NOMBRE
3       j EST_DU_TYPE NOMBRE
4       k EST_DU_TYPE NOMBRE
5       J EST_DU_TYPE NOMBRE
6       al EST_DU_TYPE LISTE
7       t EST_DU_TYPE NOMBRE
8       n EST_DU_TYPE NOMBRE
9       ng EST_DU_TYPE NOMBRE
10      ar EST_DU_TYPE NOMBRE
11      nr EST_DU_TYPE NOMBRE
12      nt EST_DU_TYPE NOMBRE
13      n0 EST_DU_TYPE NOMBRE
14      n1 EST_DU_TYPE NOMBRE
15      n2 EST_DU_TYPE NOMBRE
16      n3 EST_DU_TYPE NOMBRE
17    DEBUT_ALGORITHME
18      AFFICHER "Combien de groupes d'allumettes voulez vous mettre ?"
19      LIRE nt
20      POUR i ALLANT_DE 0 A nt-1
21        DEBUT_POUR
22        AFFICHER "Combien d'allumettes voulez vous pour le groupe "
23        j PREND_LA_VALEUR i+1
24        AFFICHER j
25        AFFICHER " ?"
26        LIRE al[i]
27        t PREND_LA_VALEUR t+al[i]
28        SI (al[i]%4==0) ALORS
29          DEBUT_SI
30          n0 PREND_LA_VALEUR (n0+1)%2
31          FIN_SI
32        SI (al[i]%4==1) ALORS
33          DEBUT_SI
34          n1 PREND_LA_VALEUR (n1+1)%2
35          FIN_SI
36        SI (al[i]%4==2) ALORS
37          DEBUT_SI
38          n2 PREND_LA_VALEUR (n2+1)%2
39          FIN_SI
40        SI (al[i]%4==3) ALORS
41          DEBUT_SI
42          n3 PREND_LA_VALEUR (n3+1)%2
43          FIN_SI
44        FIN_POUR
45      AFFICHER "Voulez vous commencer ?(1 pour oui, 0 pour non)"
46      LIRE J
47      J PREND_LA_VALEUR round(J%2)
48      TANT_QUE (t>0) FAIRE
49        DEBUT_TANT_QUE
50        POUR i ALLANT_DE 0 A nt-1
51          DEBUT_POUR
52          AFFICHER "Ligne "
53          k PREND_LA_VALEUR i+1
54          AFFICHER k
55          AFFICHER ": "
56          POUR j ALLANT_DE 1 A al[i]
57            DEBUT_POUR
58            AFFICHER "I"
59            FIN_POUR
60          AFFICHER " "
61          FIN_POUR
62        SI (J==1) ALORS
63          DEBUT_SI
64          AFFICHER "A quel groupe voulez vous retirer des allumettes ?"
65          LIRE ng
66          AFFICHER "Combien d'allumettes voulez vous retirer a ce groupe ?"
67          LIRE n
68          FIN_SI
69          SINON
70            DEBUT_SINON
71            SI ((n1==0) ET (n2==0) ET (n3==1)) ALORS
72              DEBUT_SI
73              n PREND_LA_VALEUR 3
74              nr PREND_LA_VALEUR 3
75              FIN_SI
76            SI ((n1==0) ET (n2==1) ET (n3==0)) ALORS
77              DEBUT_SI
78              n PREND_LA_VALEUR 2
79              nr PREND_LA_VALEUR 2
80              FIN_SI
81            SI ((n1==0) ET (n2==1) ET (n3==1)) ALORS
82              DEBUT_SI
83              n PREND_LA_VALEUR 1
84              nr PREND_LA_VALEUR 3
85              FIN_SI
86            SI ((n1==1) ET (n2==0) ET (n3==0)) ALORS
87              DEBUT_SI
88              n PREND_LA_VALEUR 1
89              nr PREND_LA_VALEUR 1
90              FIN_SI
91            SI ((n1==1) ET (n2==0) ET (n3==1)) ALORS
92              DEBUT_SI
93              n PREND_LA_VALEUR 2
94              nr PREND_LA_VALEUR 3
95              FIN_SI
96            SI ((n1==1) ET (n2==1) ET (n3==0)) ALORS
97              DEBUT_SI
98              n PREND_LA_VALEUR 1
99              nr PREND_LA_VALEUR 2
100             FIN_SI
101           SI (n1+n2+n3==0 OU n1+n2+n3==3) ALORS
102             DEBUT_SI
103             n PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,3)
104             SI (n>=ALGOBOX_MAXIMUM(al,0,nt-1)) ALORS
105               DEBUT_SI
106               n PREND_LA_VALEUR ALGOBOX_MAXIMUM(al,0,nt-1)%4
107               FIN_SI
108             ar PREND_LA_VALEUR ALGOBOX_ALEA_ENT(0,nt-1)
109             TANT_QUE (al[ar]%4<n) FAIRE
110               DEBUT_TANT_QUE
111               ar PREND_LA_VALEUR ALGOBOX_ALEA_ENT(0,nt-1)
112               FIN_TANT_QUE
113             nr PREND_LA_VALEUR al[ar]%4
114             FIN_SI
115           POUR i ALLANT_DE 0 A nt-1
116             DEBUT_POUR
117             SI (al[i]%4==nr ET al[i]>0) ALORS
118               DEBUT_SI
119               ng PREND_LA_VALEUR i+1
120               FIN_SI
121             FIN_POUR
122           FIN_SINON
123       SI (((n-1)*(n-2)*(n-3)==0) ET (n<=al[ng-1])) ALORS
124         DEBUT_SI
125         al[ng-1] PREND_LA_VALEUR al[ng-1]-n
126         t PREND_LA_VALEUR t-n
127         SI (n==1) ALORS
128           DEBUT_SI
129           AFFICHER n
130           AFFICHER " allumette a été prise dans le groupe "
131           AFFICHER ng
132           FIN_SI
133           SINON
134             DEBUT_SINON
135             AFFICHER n
136             AFFICHER " allumettes ont été prises dans le groupe "
137             AFFICHER ng
138             FIN_SINON
139         J PREND_LA_VALEUR (J+1)%2
140         n0 PREND_LA_VALEUR 0
141         n1 PREND_LA_VALEUR 0
142         n2 PREND_LA_VALEUR 0
143         n3 PREND_LA_VALEUR 0
144         POUR i ALLANT_DE 0 A nt-1
145           DEBUT_POUR
146           SI (al[i]%4==0) ALORS
147             DEBUT_SI
148             n0 PREND_LA_VALEUR (n0+1)%2
149             FIN_SI
150           SI (al[i]%4==1) ALORS
151             DEBUT_SI
152             n1 PREND_LA_VALEUR (n1+1)%2
153             FIN_SI
154           SI (al[i]%4==2) ALORS
155             DEBUT_SI
156             n2 PREND_LA_VALEUR (n2+1)%2
157             FIN_SI
158           SI (al[i]%4==3) ALORS
159             DEBUT_SI
160             n3 PREND_LA_VALEUR (n3+1)%2
161             FIN_SI
162           FIN_POUR
163         FIN_SI
164         SINON
165           DEBUT_SINON
166           AFFICHER "Vous ne pouvez prendre qu'un nombre entier entre 1 et 3 allumettes."
167           AFFICHER "De plus, vous ne pouvez pas prendre plus d'allumettes que ce que contient le groupe."
168           FIN_SINON
169       FIN_TANT_QUE
170     SI (J==0) ALORS
171       DEBUT_SI
172       AFFICHER "Vous avez gagné \\(^_^)/"
173       FIN_SI
174       SINON
175         DEBUT_SINON
176         AFFICHER "Vous avez perdu (;_;)"
177         FIN_SINON
178   FIN_ALGORITHME