Minesweeper è un popolare gioco di puzzle in cui devi scoprire quali tessere sono "miniere" senza fare clic su quelle tessere. Ogni tessera è una miniera (rappresentata da *
) o un indizio, ovvero un numero compreso tra 0 e 8 che rappresenta quante delle 8 tessere vicine sono miniere. Il tuo compito oggi è quello di prendere una scheda contenente le mine e compilare tutti gli indizi. Ad esempio, guarda la seguente scheda 5x4, con 5 mine:
*
* *
*
*
Dopo aver compilato gli indizi, la scheda apparirà così:
2*211
*33*1
12*32
0112*
Dettagli
È necessario scrivere un programma completo o una funzione che accetta una griglia di caratteri contenente solo spazi e asterischi e genera un'altra griglia in cui ogni spazio viene sostituito con il numero di mine adiacenti (asterischi). Ognuno di questi sono formati accettabili per le tue griglie:
Una stringa con newline al suo interno
Un elenco 2D di caratteri / stringhe di caratteri singoli
Un elenco di stringhe
Puoi presumere che la griglia sarà almeno 1x1, anche se è possibile che siano tutte le miniere o tutti gli spazi.
La griglia di input verrà sempre riempita con il numero appropriato di spazi. Come al solito, si tratta di code-golf , quindi si applicano scappatoie standard e vince la risposta più breve in byte!
IO di esempio
In modo che tu possa vedere gli spazi bianchi, mostrerò tutti i campioni di IO con parentesi attorno ad esso.
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]