Démineur est un jeu informatique populaire auquel vous avez probablement perdu du temps à jouer où vous essayez de révéler les cellules qui sont des mines dans une grille rectangulaire en fonction des indices du nombre de mines voisines que possède chaque cellule non minière. Et si vous ne l'avez pas joué, faites-le ici .
Un fait mathématique astucieux à propos d'une grille de démineur (aka conseil) est que:
Une planche et son complément ont le même nombre total de mines . ( Preuve )
C'est-à-dire que si vous avez une grille de démineur complètement révélée, la somme de tous les nombres sur cette grille, c'est-à-dire le total de la mine , sera égale au total de la mine du complément de la grille, qui est la grille où chaque mine a été remplacée avec une non-mine et chaque non-mine remplacée par une mine.
Par exemple, pour la grille Démineur
**1..
34321
*2**1
le total de la mine est 1 + 3 + 4 + 3 + 2 + 1 + 2 + 1 = 17.
Le complément de la grille est
24***
*****
3*44*
qui a le mien total 2 + 4 + 3 + 4 + 4 = 17 à nouveau.
Ecrire un programme qui prend dans une grille Démineur arbitraire sous forme de texte où *
représente une mine et 1
par 8
représenter le nombre de mines adjacentes à une cellule non-moi. Vous pouvez utiliser .
ou 0
ou
(espace) pour représenter des cellules sans voisin, selon votre choix. Vous pouvez supposer que la grille d'entrée sera correctement marquée, c'est-à-dire que chaque cellule non minière indiquera avec précision le nombre total de mines immédiatement adjacentes orthogonalement ou en diagonale.
Votre programme a besoin d'imprimer le complément de la grille dans le même format ( en utilisant le même .
, 0
ou
comme prévu dans l'entrée).
Le code le plus court en octets gagne.
- Au lieu d'un programme, vous pouvez écrire une fonction qui prend la grille d'entrée sous forme de chaîne et imprime ou renvoie la grille complémentaire.
- Un retour à la ligne de fin dans l'entrée ou la sortie est correct, mais il ne doit pas y avoir d'autres caractères que ceux qui forment la grille.
- Vous pouvez supposer qu'une grille 1 × 1 sera la plus petite entrée.
Cas de test
Toutes les entrées et sorties pourraient être échangées car le complément du complément est la grille d'origine. Les grilles peuvent également être tournées pour d'autres cas de test.
Contribution:
111
1*1
111
Sortie:
***
*8*
***
Contribution:
.
Sortie:
*
Contribution:
*11*1.1**1...1***1.....1*****1..........
Sortie:
1**2***11*****1.1*******1...1***********
Entrée: ( exemple Cut The Knot )
**212*32
333*33**
1*22*333
222222*1
*33*2232
2**22*2*
Sortie:
24***4**
***7**64
*8**7***
******8*
4**7****
*33**5*3
?
) sur la ligne après la dernière ligne de la carte est-elle acceptable, ou pourrais-je prendre le nombre de lignes d'entrée via la ligne de commande?