有时候,当我真的很无聊时,我喜欢取一个非负整数数组的总和。我只取长度为2的幂的数组的总和。不幸的是我经常犯错误。幸运的是,我通过以下方式跟踪自己的工作:
我添加成对的相邻数字,直到只剩下一个。例如:
6 + 18 + 9 + 6 + 6 + 3 + 8 + 10
= 24 + 15 + 9 + 18
= 39 + 27
= 66
您的工作是确定我是否在某个地方犯了错误。您既可以将输入传递给函数,也可以从标准输入中读取。可以打印或返回输出。
输入:数组/列表/等。非负整数,如果您的语言需要,还可以包含该数组的长度。该数组将是从左到右然后从上到下读取的所有数字。例如,上面的数组将变为:
[[6, 18, 9, 6, 6, 3, 8, 10], [24, 15, 9, 18], [39, 27], [66]]
或者,
[6, 18, 9, 6, 6, 3, 8, 10, 24, 15, 9, 18, 39, 27, 66]
如果您愿意。
输出:单个布尔值,表示是否犯了错误。可以使用任何映射来表示布尔值,条件是发生错误的所有输入都返回/打印相同的结果,而没有错误的所有输入都返回/打印相同的结果。这不言而喻,但是这两个输出不能相同。
正确求和的一些示例:
6
5+6
=11
3 + 2 + 4 + 5
= 5 + 9
= 14
[0, 1, 2, 3, 1, 5, 6]
[[1, 2, 4, 8], [3, 12], [15]]
不正确求和的一些示例:
5+4
=8
4 + 4 + 4 + 4
= 9 + 7
= 16
[[1, 2, 3, 4], [7, 3], [10]]
[3, 4, 5, 6, 7, 8, 9]
请记住,我可能会犯错误,但仍会得到正确的答案。如果我确实犯了一个错误,它将永远不会导致最终数组中出现多余的数字或缺少数字,而只会导致错误的数字。
禁止出现标准漏洞。每种语言中最短的答案是获胜者。如果是平局,则较早的答案将获胜。我保留决定“相同语言”是什么的权利,但我要说的是,Python 2和Python 3都无法赚到一点。
[0,1,2,3,1,5,6]
无效,因为“输入:正整数的数组/列表/等”。