Tester l'algorithme :
Graphique :
Code de l'algorithme :
1
VARIABLES
2
L EST_DU_TYPE LISTE
3
l EST_DU_TYPE LISTE
4
l0 EST_DU_TYPE LISTE
5
l1 EST_DU_TYPE LISTE
6
n EST_DU_TYPE NOMBRE
7
N EST_DU_TYPE NOMBRE
8
c EST_DU_TYPE NOMBRE
9
C EST_DU_TYPE NOMBRE
10
k EST_DU_TYPE NOMBRE
11
k0 EST_DU_TYPE NOMBRE
12
b EST_DU_TYPE NOMBRE
13
i EST_DU_TYPE NOMBRE
14
i0 EST_DU_TYPE NOMBRE
15
i1 EST_DU_TYPE NOMBRE
16
DEBUT_ALGORITHME
17
N PREND_LA_VALEUR 0
18
//demander le nombre de cotés
19
AFFICHER "nombre de cotés : "
20
LIRE n
21
//demander le nombre de couleurs
22
AFFICHER "nombre de couleurs : "
23
LIRE c
24
//créer la première combinaison
25
POUR i ALLANT_DE 0 A n-1
26
DEBUT_POUR
27
l[i] PREND_LA_VALEUR 0
28
FIN_POUR
29
//generation+test de toutes les combinaisons
30
POUR i ALLANT_DE 1 A pow(c, n)
31
DEBUT_POUR
32
//on compte le nombre de couleurs dans le nombre
33
C PREND_LA_VALEUR 0
34
POUR i0 ALLANT_DE 0 A c-1
35
DEBUT_POUR
36
l1[i0] PREND_LA_VALEUR 0
37
FIN_POUR
38
POUR i0 ALLANT_DE 0 A n-1
39
DEBUT_POUR
40
SI (l1[l[i0]] == 0) ALORS
41
DEBUT_SI
42
l1[l[i0]] PREND_LA_VALEUR 1
43
C PREND_LA_VALEUR C+1
44
FIN_SI
45
FIN_POUR
46
//on tourne les chiffres afin d'obtenir le plus grand nombre possible
47
k PREND_LA_VALEUR -1
48
POUR i0 ALLANT_DE 0 A n-1
49
DEBUT_POUR
50
k0 PREND_LA_VALEUR 0
51
POUR i1 ALLANT_DE 0 A n-1
52
DEBUT_POUR
53
k0 PREND_LA_VALEUR k0+l[(i1+i0)%n]*pow(c, i1)
54
FIN_POUR
55
SI (k < k0) ALORS
56
DEBUT_SI
57
k PREND_LA_VALEUR k0
58
POUR i1 ALLANT_DE 0 A n-1
59
DEBUT_POUR
60
l0[i1] PREND_LA_VALEUR l[(i1+i0)%n]
61
FIN_POUR
62
FIN_SI
63
FIN_POUR
64
//On teste si le nombre obtenu existe dans ceux déjà générés
65
b PREND_LA_VALEUR 1
66
POUR i0 ALLANT_DE 0 A N-1
67
DEBUT_POUR
68
k0 PREND_LA_VALEUR 0
69
POUR i1 ALLANT_DE 0 A n-1
70
DEBUT_POUR
71
k0 PREND_LA_VALEUR k0 + L[i0*n+i1]*pow(c, i1)
72
FIN_POUR
73
//si les deux nombres sont égaux, b vaut 0
74
SI (k0 == k) ALORS
75
DEBUT_SI
76
b PREND_LA_VALEUR 0
77
FIN_SI
78
FIN_POUR
79
//si b vaut 1 et que le nombre de couleur est correct, alors on rajoute la combinaison dans la liste
80
SI (b == 1 && C == c) ALORS
81
DEBUT_SI
82
POUR i0 ALLANT_DE 0 A n-1
83
DEBUT_POUR
84
L[N*n+i0] PREND_LA_VALEUR l0[i0]
85
AFFICHER l0[i0]
86
FIN_POUR
87
AFFICHER " "
88
N PREND_LA_VALEUR N+1
89
FIN_SI
90
//créer la combinaison suivante
91
l[0] PREND_LA_VALEUR l[0]+1
92
POUR i0 ALLANT_DE 0 A n-2
93
DEBUT_POUR
94
SI (l[i0] >= c) ALORS
95
DEBUT_SI
96
l[i0] PREND_LA_VALEUR 0
97
l[i0+1] PREND_LA_VALEUR l[i0+1]+1
98
FIN_SI
99
FIN_POUR
100
FIN_POUR
101
AFFICHER N
102
AFFICHER " combinaisons différentes"
103
FIN_ALGORITHME