Bonjour ^^ Voila notre prof de math nous a demande de faire un algorithme sur le jeu du démineur.
avec pour consigne ''cela doit rester un simple algo et ne doit pas devenir de la programmation''
alors voila ce j'ai fait :
Entrée: Tableau à dimension motrice I et J
un élément du tableau --> case #I;J# pour I et J de 1 à N
N dimensions du tableau NxN
M nombre de mine à placer X nombre de mine autour de #I;J#
N=10 et M=20
Traitement : cliquer sur case #I;J#
-> if''mine''
-> then afficher ''perdu''
-> else afficher X
IF X=0
Bonjour,
le nombre de mines autour de la case I, J est variable
donc tu ne peux pas commencer par "afficher X" tu n'en connais pas la valeur !
ce sera plutot un truc du genre :
calculer dans X le nombre de mines dans les cases voisines de la case I, J
puis afficher X
ou tu peux préciser un truc du genre :
X = 0
pour chaque case case voisine de la case I, J, si elle existe
X = X+1
fin pour
afficher X
ou "développer" le "pour" en une liste explicite des cases et un test explicite "la case existe-t-elle" :
X = 0
si I 2 et J
2 et Tableau[I-1, J-1] = mine
alors X = X+1
si I 2 et Tableau[I-1, J] = mine
alors X = X+1
si I 2 et J
N-1 et Tableau[I-1, J+1] = mine
alors X = X+1
etc etc (les 8 cases autour de I, J)
afficher X
bref ça rentre déja dans "la programmation".
la frontière est très mince.
quand au "nettoyage automatique" tel que le fait le démineur (dévoiler les cases voisines des cases nulles récursivement) c'est hors de portée d'un algo "de quelques lignes"
tu devras obligatoirement
- soit gérer une pile (c'est de la programmation)
- soit créer un sous programme récursif (qui s'appelle lui même, là aussi c'est de la programmation cette notion de sous programme)
de plus il faudrait dès le départ repenser complètement l'architecture des données pour faire quelque chose d'efficace et de "concis"
par exemple créer non pas un simple tableau indiquant s'il y a une mine ou pas, mais dès le départ deux tableaux :
un qui contient l'emplacement des mines
l'autre qui contient le nombre de mines autour
(et ne pas oublier que dans l'initialisation, il faut "fabriquer" ces tableaux, c'est à dire tirer au sort des emplacements des M mines etc ...)
alors dans la boucle principale les valeurs de X pour les cases (I, J) se "lisent" simplement dans ce second tableau sans qu'il soit nécessaire de les calculer à chaque fois, ce qui allège d'autant la boucle principale.
le prof est à mon avis complètement inconscient en posant un tel exo.
il n'est abordable avec profit que quand on a acquis déja "de la bouteille" en algorithmique / programmation.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :