#abc075b. [abc075_b]Minesweeper

[abc075_b]Minesweeper

题目描述

给定一个 H×WH × W 的网格。
网格中的方块由 HH 个字符串 S1,...,SHS_1,...,S_H 描述。
字符串 SiS_i 中的第 jj 个字符对应着位于从上往下数的第 ii 行、从左往右数的第 jj 列的方块 (1iH,1jW)(1 \leq i \leq H, 1 \leq j \leq W)
. 表示一个空方块,# 表示一个包含炸弹的方块。

海豚对于每个空方块周围有多少个水平、垂直或对角线方向上相邻的炸弹方块感兴趣。
(下文中,我们将以此意思简单地称为“相邻”。对于每个方块,最多有八个相邻方块。)
他决定用一个数字来代替我们 HH 个字符串中的每个 .,这个数字表示与对应的空方块相邻的炸弹方块的数量。

打印出处理过后的字符串。

约束条件

  • 1H,W501 \leq H, W \leq 50
  • SiS_i 是长度为 WW 的字符串,由 #. 构成。

输入

输入通过标准输入给出,格式如下:

HH WW S1S_1 : SHS_H

输出

打印处理过后的 HH 个字符串。
ii 行应该包含长度为 WW 的字符串 TiT_i,其中在网格内从上往下数的第 ii 行、从左往右数的第 jj 列对应的字符是 TiT_i 中的第 jj 个字符 (1iH,1jW)(1 \leq i \leq H, 1 \leq j \leq W)


示例输入 1

3 5
.....
.#.#.
.....

示例输出 1

11211
1#2#1
11211

例如,我们观察位于从上往下数的第一行、从左往右数的第一列的空方块。
这个空方块周围有一个相邻的炸弹方块:位于从上往下数的第二行、从左往右数的第二列的方块。
因此,与这个空方块对应的 . 被替换为 1


示例输入 2

3 5
#####
#####
#####

示例输出 2

#####
#####
#####

可能没有空方块。


示例输入 3

6 6
#####.
#.#.##
####.#
.#..#.
#.##..
#.#...

示例输出 3

#####3
#8#7##
####5#
4#65#2
#5##21
#4#310