gpt4 book ai didi

python - 如何解决Python中的数组问题?

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:59 25 4
gpt4 key购买 nike

假设有一个 5x5 的网格数组,仅由 1 和 0 组成(1 是船,0 是水)。我们有炸弹的位置(1x1)及其爆炸半径。如果必须确定有多少艘船被摧毁?

我尝试使用 if-else 解决这个问题,它显示了 radius = 1 的正确答案,但显示了 radius = 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

最佳答案

我得到了答案,它缩短了我的代码,并且给出了完美的答案。

'''

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]])

new_grid = np.pad(grid, pad_width = 1, mode = 'constant', constant_values = 0)

radius = 1

bomb_coordinate = new_grid[1+radius][1+radius]

ship_count = 0

a, b = 1 + radius, 1+radius

for i in range(a-radius, a+radius+1):
for j in range(b-radius, b+radius+1):
if new_grid[i][j] == 1:
ship_count += 1

'''

在这里,numpy 库中的填充函数发挥了神奇作用。

关于python - 如何解决Python中的数组问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57441481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com