我做了谷歌Foobar的挑战power_hungry(见下文)。谷歌Foobar的挑战失败2出5测试用例
我想不通,为什么下面的代码失败的测试案例#3,#5。任何人都可以看到我失踪的东西吗?我没有考虑边缘案例吗?
这里是我的Python代码:
from functools import reduce
import operator
def get_pair_prod(xs):
if len(xs) < 2:
return 1
xs.sort()
return xs[0] * xs[1]
def answer(xs):
if len(xs) == 0:
return "0"
positive = [x for x in xs if x > 0]
negative = [x for x in xs if x < 0]
if len(negative) == 1 and len(positive) == 0:
return str(negative[0])
elif len(negative) == 0 and len(positive) == 0:
return str("0")
positive.append(get_pair_prod(negative))
return str(reduce(operator.mul, positive, 1))
我们的难题是:
耗电
指挥官拉姆达的空间站是巨大的。巨大的太空站需要很大的功率。拥有世界末日装置的巨大空间电台需要更多电力。为了满足车站的电力需求,司令员Lambda在车站外表面安装了太阳能电池板。但台站位于类星体量子通量场的中间,这对太阳能电池板造成严重破坏。你和你的追随者的队伍已经被分配来修复太阳能电池板,但你不能把他们全部下来,而无需关闭空间站一次(和所有那些讨厌的生命支持系统!)。
您需要弄清楚在任何给定阵列中哪些面板可以脱机修复,同时仍然保持每个阵列的最大输出功率,并且要做到这一点,首先需要弄清楚每个阵列的最大输出实际上是。编写一个函数答案(xs),其中包含表示数组中每个面板的功率输出级别的整数列表,并返回这些数字的某些非空子集的最大乘积。因此,例如,如果阵列包含与[2,-3,1,0,-5],则最大的产品会被发现功率输出电平的面板通过取子集:XS [0] = 2,XS [1 ] = -3,xs [4] = -5,给出乘积2 *( - 3)*( - 5)= 30。所以答案([2,-3,1,0,-5])将是“ 30" 。
太阳能电池板的每个阵列都包含至少1块但不超过50块的面板,每块面板的功率输出级别绝对值不会超过1000(某些面板故障严重,以至于会耗尽能量,但你知道面板波动稳定器的一个技巧,它可以让你将两个负输出面板组合成多个功率值的正输出。最终产品可能非常大,因此请以数字的字符串表示形式给出答案。
语言
为了提供一个Python溶液,编辑solution.py 为了提供Java解决方案,编辑solution.java
测试用例
输入:(INT表)XS = [2 ,0,2,2,0]输出:(字符串)“8”
输入:(int list)xs = [-2,-3,4,-5]输出:(字符串)“60”
使用verify [file]来测试你的解决方案,看看它是如何工作的。完成编码后,使用提交[文件]提交答案。如果您的解决方案通过测试用例,它将从您的主文件夹中删除。
欢迎来到SO。请看看这个,以便其他人可以更有效地帮助你:https://stackoverflow.com/help/mcve – petezurich
@petezurich:谢谢。据我所知,我的代码是最小的。然而,至于完整性,问题的本质是我不知道两个失败测试用例的输入**,所以我不能提供关于错误的更多信息。就可以验证的错误而言,如果我能够弄清楚错误是什么,以便我可以在这里验证它们,我不会要求帮助来确定我的逻辑中存在哪些缺陷。我的代码通过了我所有的测试用例,所以我不能测试一些重要的情况。 –
我发现我的错误,这是我首先误解了挑战。出于某种原因,我错误地认为,只有绝对价值最高的两个负面因素才被纳入产品。 –