Сапер - популярная игра-головоломка, в которой вы должны выяснить, какие плитки являются «минами», не нажимая на эти плитки. Каждая ячейка является либо шахтой (представленной *
), либо подсказкой, то есть числом от 0 до 8, представляющим, сколько из 8 соседних плиток является минами. Ваша задача сегодня - взять доску с минами и заполнить все подсказки. Например, посмотрите на следующую доску 5х4 с 5 минами:
*
* *
*
*
После заполнения подсказок доска будет выглядеть так:
2*211
*33*1
12*32
0112*
подробности
Вы должны написать либо полную программу, либо функцию, которая принимает сетку символов, содержащую только пробелы и звездочки, и выводит другую сетку, где каждый пробел заменяется количеством смежных мин (звездочек). Любой из этих форматов является приемлемым для ваших сеток:
Строка с переводом строки
2D список символов / односимвольные строки
Список строк
Вы можете предположить, что сетка будет по крайней мере 1x1, хотя возможно, что это будут все мины или все пространства.
Сетка ввода всегда будет заполнена соответствующим количеством пробелов. Как обычно, это код-гольф , поэтому применяются стандартные лазейки и выигрывает самый короткий ответ в байтах!
Образец ввода-вывода
Чтобы вы могли видеть пробелы, я покажу все примеры ввода-вывода с квадратными скобками.
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]