为什么数字加法不正确?

时间:2018-06-21 05:25:41

标签: python python-3.x

我目前正在完成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))

1 个答案:

答案 0 :(得分:0)

我同意@Barmar,因此我理解您的误解。

但是,如果我错了,请纠正我,但是我对您的get_maximum_hourglass_sum函数有一些疑问,因为在我看来,您实际上是在考虑沙漏的所有中间行(而不是仅考虑沙漏的中间行)中间点)

PS:我在hackerank上运行了您的代码,但是由于RunTimeError导致大部分测试失败了