Minesweeper ist ein beliebtes Puzzlespiel, bei dem Sie herausfinden müssen, welche Kacheln "Minen" sind, ohne auf diese Kacheln zu klicken. Jedes Plättchen ist entweder eine Mine (dargestellt durch *
) oder ein Hinweis, dh eine Zahl von 0 bis 8, die angibt, wie viele der 8 benachbarten Plättchen Minen sind. Ihre Aufgabe heute ist es, eine Tafel mit den Minen zu nehmen und alle Hinweise einzugeben. Schauen Sie sich zum Beispiel das folgende 5x4-Brett mit 5 Minen an:
*
* *
*
*
Nachdem Sie die Hinweise eingegeben haben, sieht das Board folgendermaßen aus:
2*211
*33*1
12*32
0112*
Einzelheiten
Sie müssen entweder ein Vollprogramm oder eine Funktion schreiben, die ein Zeichenraster nur mit Leerzeichen und Sternchen aufnimmt und ein anderes Raster ausgibt, in dem jedes Leerzeichen durch die Anzahl der benachbarten Minen (Sternchen) ersetzt wird. Alle diese Formate sind für Ihre Raster akzeptabel:
Eine Zeichenfolge mit Zeilenumbrüchen
Eine 2D-Liste von Zeichen / Einzelzeichenfolgen
Eine Liste von Zeichenfolgen
Sie können davon ausgehen, dass das Gitter mindestens 1x1 beträgt, es können jedoch auch alle Minen oder alle Felder sein.
Das Eingaberaster wird immer mit der entsprechenden Anzahl von Leerzeichen aufgefüllt. Wie üblich ist dies Codegolf , daher gelten Standardlücken und die kürzeste Antwort in Bytes gewinnt!
Beispiel IO
Damit Sie das Leerzeichen sehen können, zeige ich alle Beispiel-E / A mit eckigen Klammern.
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]