假设有一个 5x5 的网格阵列,仅由 1 和 0 组成(1 是船,0 是水)。我们有炸弹的位置(1x1)和它的爆炸半径。如果必须确定有多少艘船被摧毁?
我尝试使用 if-else 解决这个问题,它显示半径 = 1 的正确答案,但半径 = 2 的错误答案。如果有人有更小的代码,那就太好了。
grid = np.array([[0,1,1,0,1],[0,0,1,1,1],[1,1,1,0,0],[1,0,0,1,1],[0,0,0,1,0]])
bomb_coordinate = grid[1][1]
radius = 1
ship_count = 0
a, b = 1,1
if a==0:
if b == 0:
for i in range(a, a+radius+1):
for j in range(b, b+radius+1):
if grid[i][j] == 1:
ship_count += 1
elif b == 4:
for i in range(a , a+radius+1):
for j in range(b-radius, b+1):
if grid[i][j] == 1:
ship_count += 1
else:
for i in range(a, a+radius+1):
for j in range(b-radius, b+radius+1):
if grid[i][j] == 1:
ship_count +=1
elif a == 4:
if b == 0:
for i in range(a-radius, a+1):
for j in range(b, b+radius+1):
if grid[i][j] == 1:
ship_count += 1
elif b == 4:
for i in range(a-radius , a+1):
for j in range(b-radius, b+1):
if grid[i][j] == 1:
ship_count += 1
else:
for i in range(a-radius, a+1):
for j in range(b-radius, b+radius+1):
if grid[i][j] == 1:
ship_count +=1
else:
if b == 0:
for i in range(a-radius, a+radius+1):
for j in range(b, b+radius+1):
if grid[i][j] == 1:
ship_count += 1
elif b == 4:
for i in range(a-radius , a+radius+1):
for j in range(b-radius, b+1):
if grid[i][j] == 1:
ship_count += 1
else:
for i in range(a-radius, a+radius+1):
for j in range(b-radius, b+radius+1):
if grid[i][j] == 1:
ship_count +=1