Saper to popularna gra logiczna, w której musisz odkryć, które kafelki są „kopalniami”, bez klikania na te kafelki. Każdy kafelek jest kopalnią (reprezentowaną przez *
) lub wskazówką, tj. Liczbą od 0 do 8, która reprezentuje liczbę 8 sąsiadujących kafelków to miny. Twoim zadaniem dzisiaj jest zabranie planszy zawierającej miny i wypełnienie wszystkich wskazówek. Na przykład spójrz na następującą planszę 5x4 z 5 minami:
*
* *
*
*
Po wypełnieniu wskazówek tablica będzie wyglądać następująco:
2*211
*33*1
12*32
0112*
Detale
Musisz napisać pełny program lub funkcję, która przyjmuje siatkę znaków zawierającą tylko spacje i gwiazdki i wypisuje inną siatkę, w której każda spacja jest zastępowana liczbą sąsiednich min (gwiazdkami). Każdy z tych formatów jest akceptowalny dla twoich siatek:
Ciąg z znakami nowej linii
2D lista znaków / ciągi pojedynczych znaków
Lista ciągów
Możesz założyć, że siatka będzie wynosić co najmniej 1x1, chociaż możliwe jest, że będą to wszystkie miny lub wszystkie pola.
Siatka wejściowa zawsze będzie wypełniona odpowiednią liczbą spacji. Jak zwykle jest to gra w golfa , więc obowiązują standardowe luki i wygrywa najkrótsza odpowiedź w bajtach!
Próbka IO
Aby zobaczyć białą przestrzeń, pokażę wszystkie próbki IO z nawiasami wokół tego.
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]