close
Content

您玩過《踩地雷》嗎?這是一款可愛的小遊戲,遊戲的目標是找到所有M×N地圖內的地雷。
為了幫助您,遊戲在一個正方形中顯示一個數字,告訴您該正方形附近有多少個地雷。

例如,假設下面的4×4的地圖內帶有2個地雷(以"*"字元表示)。

* . . .
. . . .
. * . .
. . . .

如果我們根據上述作法,將遊戲提示數字填入,則結果將為:

* 1 0 0
2 2 1 0
1 * 1 0
1 1 1 0

當然,您可能已經注意到,每個正方形內的數字最多為8(因為最多有8個正方形相鄰)。

Input

輸入將包含多組測資。
每組測資第一行包含兩個整數n和m (0 < n, m ≤ 100),代表地圖大小。
如果n = m = 0代表輸入結束。
接下來的n行,每行m個字元,代表整張地圖。
每個安全方塊用"."字元表示,每個地雷方塊用"*"字元表示。

Output

對於每組測資。
輸出第一行為"Field #k:",k代表測資編號。
接下來輸出題示後的遊戲地圖。
每筆測資間請用空白行分隔。

Sample Input #1
4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
Sample Output #1
Field #1:
*100
2210
1*10
1110

Field #2:
**100
33200
1*100

python:

num=0
while True:
    try:
        n,m=map(int,input().split())
        if(n==0 and m==0):break
        arr=[[0]*(m+2)]
        num+=1
        for _ in range(n):
            arr1=[0]+[x for x in input()[::1]]+[0]
            arr.append(arr1)
        arr.append([0]*(m+2))
        #print(arr)
        
        arr4=[]
        for i in range(1,n+1):
            arr3=[]
            for j in range(1,m+1):
                count=0
                if(arr[i][j]=='*'):
                    count='*'
                    arr3.append(count)
                    continue


                if(arr[i+1][j]=='*'):count+=1
                if(arr[i-1][j]=='*'):count+=1
                if(arr[i][j+1]=='*'):count+=1
                if(arr[i][j-1]=='*'):count+=1
                if(arr[i+1][j+1]=='*'):count+=1
                if(arr[i+1][j-1]=='*'):count+=1
                if(arr[i-1][j-1]=='*'):count+=1
                if(arr[i-1][j+1]=='*'):count+=1
                arr3.append(count)
            arr4.append(arr3)
        print(f'Field #{num}:',end='\n')
        for i in arr4:
            print(*i,sep='')
    except:
        break
arrow
arrow
    創作者介紹
    創作者 趴趴熊日常 的頭像
    趴趴熊日常

    資工趴趴熊的小天地

    趴趴熊日常 發表在 痞客邦 留言(0) 人氣()