竞赛讨论区 > 扫雷游戏
头像
920544
发布于 2021-02-20 00:06
+ 关注

扫雷游戏

n, m = input().split()
n = int(n)
m = int(m)
lis = []
lis_new = []
'''生成 * 周围的八个坐标'''
dirs = [
    lambda x, y: (x - 1, y), # 上
    lambda x, y: (x + 1, y), # 下
    lambda x, y: (x, y - 1), # 左
    lambda x, y: (x, y + 1), # 右
    lambda x, y: (x - 1, y - 1), #左上
    lambda x, y: (x - 1, y + 1), #右上
    lambda x, y: (x + 1, y - 1), #左下
    lambda x, y: (x + 1, y + 1), #右下
]
for i in range(n):
    li = list(input())
    lis.append(li)
for i in range(n):
    li = [0 for _ in range(m)]
    lis_new.append(li)

for x in range(len(lis)):
    for y in range(len(lis[x])):
            '''
            如果lis(x,y)对应 * 则 
            将lis_new中的(x,y)对应的 0 换成 * 
            '''
        if lis[x][y] == '*':
            lis_new[x][y] = '*'
            for dir in dirs:
                next_node = dir(x, y)
                '''
                依次取出 * 周围的八个坐标,
                如果没有越界则将出现次数进行累计并填入该位置
                '''
                if -1 < next_node[0] < n and -1 < next_node[1] < m and lis_new[next_node[0]][next_node[1]] != '*':
                    lis_new[next_node[0]][next_node[1]] += 1
'''按照要求输出lis_new'''
for li in lis_new:
    for j in li:
        print(j, end='')
    print()


         

全部评论

(0) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐