printРабочее место участника

printЗадачи

257. Сапер

Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Мальчику Васе очень нравится известная игра "Сапер". В нее играет один человек. Игра идет на клетчатом поле размером `m\ times\ n` (`m` строк, `n` столбцов). В некоторых клетках поля стоят мины. В каждой из остальных клеток записано либо число от 1 до 8 — количество мин в соседних с ней клетках, либо ничего не написано — это означает, что в соседних клетках мин нет. Клетки являются соседними, если они имеют хотя бы одну общую вершину. В одной клетке не может стоять более одной мины. Будем называть поле с расположенными на нем минами и числами картой.
Изначально все клетки поля закрыты. Игрок за один ход может открыть какую-нибудь клетку. После этого игроку показывается содержимое этой клетки, и если в открытой им клетке оказывается мина, он проигрывает. В противном случае игра продолжается. Цель игры — открыть все клетки, в которых нет мин.
У Васи на компьютере есть эта игра, но ему кажется, что все карты, которые в ней есть, некрасивые и неинтересные. Поэтому он решил нарисовать свои. При этом он хочет, чтобы карты, которые он нарисует, после того, как они будут открыты, выглядели красиво.
У Васи есть рисунки, нарисованные на клетчатой бумаге следующим образом: некоторые клетки закрашены в черный цвет, а некоторые оставлены белыми. Вася хочет по каждому такому рисунку сделать соответствующее ему поле для игры в "Сапера" по следующему правилу: если на рисунке клетка покрашена в черный цвет, то на этом месте должна быть либо мина, либо число от 1 до 8, если же клетка оставлена белой, то на игровом поле она должна быть пустой.
Напишите программу, которая сделает это за Васю.
Ввод
В первой строке входного файла содержатся числа `m` и `n` (`1\ ≤\ m,\ n\ ≤\ 100`) — количество строк и столбцов соответственно. Далее идет таблица из `m` строк, по `n` чисел в каждой строке, задающая Васин рисунок. Каждое число в таблице равно 0 или 1, число 0 означает, что соответствующая клетка на рисунке белая, 1 — черная. Числа в строках разделяются пробелами.
Вывод
Выходной файл должен содержать `m` строк по `n` символов — карту игрового поля, `j`-ый символ `i`-ой строки должен содержать символ "*" (звездочка) если в клетке `(i,j)` стоит мина, цифру от 1 до 8, если в этой клетке стоит соответствующее число, либо "." (точка), если клетка `(i,j)` пустая. Символы пробелами не разделяйте.
Если построить поле, соответствующее рисунку, невозможно, выходной файл должен содержать одну строку с сообщением "No solution".

Пример ввода 1

3 4
0 1 1 1
1 1 1 1
1 1 0 0

Пример вывода 1

.1*1
1211
*1..

Пример ввода 2

3 3
0 1 0
1 0 1
0 1 0

Пример вывода 2

No solution
Источник: XII командный чемпионат школьников Санкт-Петербурга по программированию.
loading