25.扫雷游戏
http://acm.fzu.edu.cn/problem.php?pid=1056
import sys
def transac_filed(lines,length,filed):
# 先在'雷场'四周围上一圈'土',方便后续的计算操作
for i in range(0,lines):
filed[i].insert(0,'.')
filed[i].append('.')
filed.insert(0,['.' for x in range(0,length+2)])
filed.append(['.' for x in range(0,length+2)])
# 只对原来的部分进行计算
for i in range(1,lines+1):
for j in range(1,length+1):
if filed[i][j]=='*':
pass
else:
count=0
ul=filed[i-1][j-1]
u=filed[i-1][j]
ur=filed[i-1][j+1]
l=filed[i][j-1]
r=filed[i][j+1]
dl=filed[i+1][j-1]
d=filed[i+1][j]
dr=filed[i+1][j+1]
for each in [ul,u,ur,l,r,dl,d,dr]:
if each=='*':
count+=1
filed[i][j]=count
print(''.join([str(x) for x in filed[i][1:-1]]))
print()
line_left=0
for read_in in sys.stdin.readlines():
if not read_in:
break
if line_left==0:
lines,length=tuple([int(x) for x in read_in.rstrip().split(' ')]) #某组用例的行数,每行的长度
line_left=lines
filed=[] # 雷场
else:
filed.append(list(read_in.rstrip()))
line_left-=1
if line_left==0:
transac_filed(lines,length,filed)