Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

algorithme

Posté par
lefoudemath
26-03-14 à 15:01

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

c'est ici que je bloque ce que je doit mettre est
''regarder les cases autours ; si parmis ces cases x=0 alors refaire pareil  ( regarder les cases autours de celles ci ) ''

je précise mon prof a regarder le debut est a dit qu'il ne fallait rien changé
merci pour votre aide

Posté par
mathafou Moderateur
re : algorithme 26-03-14 à 15:39

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.

Posté par
lefoudemath
re : algorithme 26-03-14 à 17:05

Je te remercie quand même pour tout  !!



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1741 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !