Minesweeper est un jeu de puzzle populaire dans lequel vous devez découvrir quelles tuiles sont des "mines" sans cliquer dessus. Chaque tuile est soit une mine (représentée par *
), soit un indice, c'est-à-dire un nombre compris entre 0 et 8 représentant le nombre de tuiles voisines qui sont des mines. Votre tâche aujourd'hui est de prendre un tableau contenant les mines et de renseigner tous les indices. Par exemple, regardez le tableau 5x4 suivant, avec 5 mines:
*
* *
*
*
Une fois les indices renseignés, le tableau ressemblera à ceci:
2*211
*33*1
12*32
0112*
Détails
Vous devez écrire un programme complet ou une fonction qui prend une grille de caractères ne contenant que des espaces et des astérisques et génère une autre grille dans laquelle chaque espace est remplacé par le nombre de mines adjacentes (astérisques). Tous ces formats sont acceptables pour vos grilles:
Une chaîne avec des nouvelles lignes dedans
Une liste 2D de caractères / chaînes de caractères uniques
Une liste de chaînes
Vous pouvez supposer que la grille sera au moins 1x1, bien qu'il soit possible que ce soit toutes les mines ou tous les espaces.
La grille d’entrée sera toujours complétée avec le nombre approprié d’espaces. Comme d'habitude, c'est du code-golf , donc des échappatoires standard s'appliquent et la réponse la plus courte en octets l'emporte!
Échantillon IO
Pour que vous puissiez voir les espaces, je vais montrer tous les exemples d'E / S entre parenthèses.
Input:
[ * ]
[* ]
[ ]
[ ]
[ ** ]
[ * * ]
Output:
[1101*1]
[*10111]
[110000]
[012210]
[12**21]
[1*33*1]
Input:
[****]
[****]
Output:
[****]
[****]
Input:
[ ]
[ ]
[ ]
[ ]
Output:
[000]
[000]
[000]
[000]
Input:
[* ]
[** ]
[ ]
[ *]
Ouput:
[*310]
[**10]
[2221]
[001*]
Input:
[** ]
[* *]
[ * ]
[ ]
[* ]
[**** ]
Output:
[**1011]
[*4211*]
[12*111]
[121100]
[*43210]
[****10]
Input:
[ * ]
[ * ]
[ * ]
[** *** ]
[ *** ]
[ ]
[ ** ]
[ * * ]
[* ** ]
[ ** ]
Output:
[00001*1111]
[00002221*1]
[22102*4321]
[**102***31]
[221013***1]
[0000013542]
[0112111**1]
[12*2*12442]
[*212112**2]
[1100002**2]