Minesweeper Minesweeper
Challenging
EN French RU

"Nikola, quel est le problème avec Stephen ?" cria Sofia lorsqu'elle vit Nikola jeter ses outils dans les jambes de Stephen.

"Il a marché sur une mine."

"Quoi!?"

"Ne t'inquiète pas ! Les robots de sa classe sont très solides, pas comme nous ; il est sorti presque indemne de l'explosion. Une fois que j'aurai tout vérifié deux fois, je l'enverrai au nettoyage."

"Mais comment a-t-il pu marcher sur une mine?"

"Oui, c'est ça qui doit nous inquiéter. Il y a un champ de mines à deux heures de marche d'ci. On dirait que quelqu'un protège quelquechose, ou se protège de quelqu'un. De toute façon, il est très difficile de traverser ce champ de mines.

"Stephen est-il revenu à lui? Nous entend-il?"

"Non, mais je sais ce que tu veux savoir, et la réponse est NON! On ne va pas laisser Stephen dégager un chemin à travers le champ de mines pour nous. Même son châssis anti-feu ne pourra pas supporter les explosions aussi longtemps. Sans compter que c'est très desagréable à faire !"

"Comment peux-tu seulement imaginer que j'allais lui demander ça ?" dit Sofia en boudant.

"Alors quelle était donc ta question?"

"Peu importe… alors, que prosposes-tu? Quelles sont les options?"

"C'est toi qu'on va envoyer là-bas," répondit Nikola.

"QUoi?! Mon chassis n'est pas aussi solide que celui de Stephen! Non. Non et Non. J'ai beau être superbe et très coûteuse, cela ne veut pas dire que je suis solide et efficace."

"Il y a un champ magnétique, donc chaque mine est reliée à un cadre métallique."

"Oh, alors ce ne serait pas plus mal que ce soit moi qui y aille ?"

"Exactement. Tu n'as presque aucune pièce métallique -- tu pourras facilement te déplacer là-bas."

"Même si...

Le jeu de démineur est un jeu d'ordinateur classique. Le but du jeu est de libérer un champ de mines abstrait, sans faire sauter de mine. On présente initialement au joueur une grille de cases d'apparences identiques. Certaines de ces cases contiennent aléatoirement des mines, à des positions inconnues du joueur. La grille est habituellement de taille 10 x 10. Le jeu se déroule en découvrant certaines cases de la grille. Si la case désignée contient une mine, elle explose et le joueur a perdu. Si une case saine est désignée, un nombre apparaît dans cette case. Il s'agit du nombre de cases adjacentes (moins de 8) qui contiennent une mine. Si ce nombre est 0, la case devient blanche et les cases avoisinantes sont automatiquement révélées. Il vous faut démasquer toutes les cases qui contiennent des mines, et désigner toutes les autres.

Précisons les règles:

A chaque itération, la fonction checkio prend en argument la carte du champ. La carte est représentée par une liste de listes. Chaque case de la carte peut être marquée par : -- case non ouverte, -- une mine, -- nombre de mines qui entourent la case. Votre fonction checkio doit retourner un tuple ou une liste de trois valeurs. La première valeur dit s'il y a une mine sur la case dont les coordonnées sont données ensuite (False ou True) ; Les deuxième et troisième valeurs sont les coordonnées (i,j) dans la carte passée de field (field[i][j]). En début de partie, vous pouvez utiliser la case [0, 0] -- elle est toujours vide.

minesweeper minesweeper

Une carte du champ de mines, comme liste de listes d'entiers.

Un tuple ou une liste avec les valeurs suivantes : est-ce une mine, comme booléen, ligne et colonne de la case, comme entiers.

checkio([
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
])  # [False, 0, 0]
checkio([
    [0, 2, -1, -1, -1, -1, -1, -1, -1, -1],
    [0, 2, -1, -1, -1, -1, -1, -1, -1, -1],
    [0, 1, 1, 1, -1, -1, -1, -1, -1, -1],
    [0, 0, 0, 1, -1, -1, -1, -1, -1, -1],
    [0, 1, 1, 2, -1, -1, -1, -1, -1, -1],
    [0, 1, -1, -1, -1, -1, -1, -1, -1, -1],
    [0, 1, -1, -1, -1, -1, -1, -1, -1, -1],
    [2, 1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
])  # [True, 0, 2]

Bien sûr, le but de cette mission est de vous montrer que vous avez les compétences pour programmer vous-même le jeu original de Windows. Ces concepts sont appliqués dans des problèmes de prédiction, ou de systèmes décisionnels.


len(field) == 10
all(len(row) == 10 for rown in field)
field[0][0] == 0
L'énigme peut être résolue dans faire appel au hasard.

You should be an authorized user in order to see the full description and start solving this mission.
Users attempted: 547
Users succeeded: 259
Score for solving: 100
Score for every vote: 35
Player of the Month