我目前正在完成一个黑客等级挑战。我编写的解决方案只适用于一半的测试,但对于其他测试却失败了。我注意到,当手动添加数字时,它并不等于预期的答案。例如,在下面的测试数据中,我找不到增加预期输出的任何组合。
我试着手动调试它并使用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))发布于 2018-06-21 06:56:09
我同意“Barmar”,因此我理解你的误解。
但是,如果我错了,请纠正我,但我对您的get_maximum_hourglass_sum函数有一些怀疑,因为在我看来,您实际上是在考虑沙漏的所有中间行(而不是只考虑中间点)。
PS :我在hackerank上运行了您的代码,但是由于RunTimeError,我大部分测试都失败了
https://stackoverflow.com/questions/50960935
复制相似问题