我目前正在完成hackerrank挑战。我编写的解决方案在一半的测试中有效,但在其他测试中却失败。我注意到手动添加数字时,它不等于预期的答案。例如,在下面的测试数据中,我找不到添加到预期输出的任何组合。
我尝试手动调试并使用pdb进行调试,但是我不认识这个问题。
以下是测试数据:
1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 9 2 -4 -4 0
0 0 0 -2 0 0
0 0 -1 -2 -4 0
这是预期的输出:
13
以下是脚本:
#!/bin/python3
def get_hourglasses(array):
hourglasses = list()
row_list = list()
# Extract rows
for row in range(len(array)):
for col in range(len(array[row])):
try:
to_append = [array[row][col], array[row][col+1], array[row][col+2]]
row_list.append(to_append)
except IndexError:
break
# Construct hourglass
for row in range(len(row_list)):
try:
hourglass = [row_list[row], row_list[row+4], row_list[row+8]]
hourglasses.append(hourglass)
except:
break
return hourglasses
def get_maximum_hourglass_sum(array):
hourglass_sums = list()
hourglasses = get_hourglasses(array)
# add all the hourglasses
sums = int()
for hourglass in hourglasses:
hourglass_sums.append(sums)
sums = 0
for row in hourglass:
sums += sum(row)
return sorted(hourglass_sums)[-1]
if __name__ == '__main__':
arr = []
for _ in range(6):
arr.append(list(map(int, input().rstrip().split())))
print(get_maximum_hourglass_sum(arr))
答案 0 :(得分:0)
我同意@Barmar,因此我理解您的误解。
但是,如果我错了,请纠正我,但是我对您的get_maximum_hourglass_sum
函数有一些疑问,因为在我看来,您实际上是在考虑沙漏的所有中间行(而不是仅考虑沙漏的中间行)中间点)
PS:我在hackerank上运行了您的代码,但是由于RunTimeError导致大部分测试失败了