如何计算附近有多少个地雷?
How to calculate how many mines are nearby?
我正在尝试将数字添加到扫雷板上。
我已经按照一些教程如何解决它。但是我的不工作。
有人可以看看缺少了什么吗?
field = [['.', '.', '.', '.'],
['.', '.', '*', '.'],
['*', '.', '*', '.'],
['*', '.', '.', '*']]
count = 0
row = len(field)
col = len(field[0])
row_range = range(row - 1, row + 2)
col_range = range(col - 1, row + 2)
for i in row_range:
for j in col_range:
if 0 <= i < len(field) and 0 <= j < len(field[0]) and field[i][j] != '.':
count += 1
for i in range(len(field)):
for j in range(len(field[0])):
field[i][j] = count
return field
What I need:
[['0', '1', '1', '1'],
['1', '3', '*', '2'],
['*', '4', '*', '3'],
['*', '3', '2', '*']]
What I get:
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]
我无法解释该代码有什么问题,但以下是正确的:
import copy
import pprint
field = [['.', '.', '.', '.'],
['.', '.', '*', '.'],
['*', '.', '*', '.'],
['*', '.', '.', '*']]
output = copy.deepcopy(field)
for i in range(len(field)):
for j in range(len(field[0])):
if field[i][j] != '*':
count = 0
for a in (-1, 0, 1):
for b in (-1, 0, 1):
if (0 <= i+a < len(field) and
0 <= j+b < len(field[0]) and
field[i+a][j+b] == '*'):
count += 1
output[i][j] = str(count)
pprint.pprint(output, width=25)
这会打印:
[['0', '1', '1', '1'],
['1', '3', '*', '2'],
['*', '4', '*', '3'],
['*', '3', '2', '*']]
我正在尝试将数字添加到扫雷板上。 我已经按照一些教程如何解决它。但是我的不工作。 有人可以看看缺少了什么吗?
field = [['.', '.', '.', '.'],
['.', '.', '*', '.'],
['*', '.', '*', '.'],
['*', '.', '.', '*']]
count = 0
row = len(field)
col = len(field[0])
row_range = range(row - 1, row + 2)
col_range = range(col - 1, row + 2)
for i in row_range:
for j in col_range:
if 0 <= i < len(field) and 0 <= j < len(field[0]) and field[i][j] != '.':
count += 1
for i in range(len(field)):
for j in range(len(field[0])):
field[i][j] = count
return field
What I need:
[['0', '1', '1', '1'],
['1', '3', '*', '2'],
['*', '4', '*', '3'],
['*', '3', '2', '*']]
What I get:
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]
我无法解释该代码有什么问题,但以下是正确的:
import copy
import pprint
field = [['.', '.', '.', '.'],
['.', '.', '*', '.'],
['*', '.', '*', '.'],
['*', '.', '.', '*']]
output = copy.deepcopy(field)
for i in range(len(field)):
for j in range(len(field[0])):
if field[i][j] != '*':
count = 0
for a in (-1, 0, 1):
for b in (-1, 0, 1):
if (0 <= i+a < len(field) and
0 <= j+b < len(field[0]) and
field[i+a][j+b] == '*'):
count += 1
output[i][j] = str(count)
pprint.pprint(output, width=25)
这会打印:
[['0', '1', '1', '1'],
['1', '3', '*', '2'],
['*', '4', '*', '3'],
['*', '3', '2', '*']]