Сапер - популярна гра-головоломка, де ви повинні виявити, які плитки є "мінами", не клацаючи на них. Кожна плитка є або міною (представленою *
), або підказкою, тобто число від 0 до 8, що представляє, скільки з 8 сусідніх плиток є мінами. Ваше завдання сьогодні - взяти дошку, що містить міни, і заповнити всі підказки. Наприклад, подивіться наступну дошку 5х4 з 5 мінами:
*
* *
*
*
Після заповнення ключів рада буде виглядати приблизно так:
2*211
*33*1
12*32
0112*
Деталі
Ви повинні написати або повну програму, або функцію, яка містить сітку символів, що містить лише пробіли та зірочки, і виводить іншу сітку, де кожен пробіл замінюється кількістю сусідніх мін (зірочок). Будь-який із цих форматів є прийнятними для вашої сітки:
Рядок з новими рядками
2D список символів / одиночні символьні рядки
Список рядків
Можна припустити, що сітка буде принаймні 1x1, хоча можливо, що це можуть бути всі шахти або всі простори.
Вхідна сітка завжди буде залита відповідним числом пробілів. Як завжди, це код-гольф , тому застосовуються стандартні лазівки і найкоротша відповідь у байтах виграє!
Зразок IO
Щоб ви могли побачити пробіл, я покажу весь зразок IO з дужками навколо нього.
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]