Расстановка чисел в Сапёре

Просмотр в формате PDF

Submit solution


Очки: 160
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++

Генератор уровней для игры «Сапёр» уже разместил мины на прямоугольном поле размера n на m. Каждая клетка поля содержит либо мину, обозначенную символом '*', либо пока ещё не заполненную безопасную клетку, обозначенную символом '.'.

Теперь генератору нужно проставить в каждой безопасной клетке число соседних мин. Соседними считаются все клетки, имеющие общую сторону или угол с данной, то есть до 8 клеток вокруг неё.

Требуется преобразовать поле следующим образом:

  • если в клетке находится мина, символ '*' должен остаться без изменений;
  • если клетка безопасна, вместо '.' нужно записать цифру от 0 до 8, равную количеству мин среди соседних клеток.

Входные данные

В первой строке заданы два целых числа n и m — количество строк и столбцов поля.

В следующих n строках записано описание поля — по m символов в каждой строке. Каждый символ равен либо '.', либо '*'.

Выходные данные

Выведите n строк по m символов — поле после расстановки чисел генератором.

Для клеток с минами выведите '*', для остальных — соответствующую цифру от 0 до 8.

Ограничения

  • 1 <= n, m <= 1000
  • ввод и вывод осуществляются через стандартный ввод и стандартный вывод

Примеры

Пример 1

Входные данные

3 3
*..
.*.
..*

Выходные данные

*21
2*2
12*
Пример 2

Входные данные

3 4
***.
....
.*..

Выходные данные

***1
3431
1*10

Комментарии

Еще нет ни одного комментария.