我正在进行Google FooBar挑战,测试用例似乎不正确;下面是重点。
return the product of non-empty subset of those numbers. Example [2, -3, 1, 0, -5],
would be: xs[0] = 2, xs[1] = -3, xs[4] = -5,
giving the product 2*(-3)*(-5) = 30.
So answer([2,-3,1,0,-5]) will be "30".
鉴于以下内容:
案例1:
Inputs:
(int list) xs = [2, 0, 2, 2, 0]
Output:
(string) "8"
案例2:
Inputs:
(int list) xs = [-2, -3, 4, -5]
Output:
(string) "60"
60的“预期结果”让我困惑,预计结果不应该是120吗?当我提交以下代码时:
def answer(xs):
runningTotal = ""
for i in range(0, len(x)):
if x[i] != 0:
runningTotal = runningTotal + "(" + str(x[i]) +")" + " * "
answer = runningTotal.replace("-","")[:-3]
return str(eval(answer))
它通过了测试1,但未通过测试2(和3,4,5,我没有给出测试条件)。是否有我遗漏的内容,或者这可能是Google预期结果的错误?以下是整个指令集。
指挥官Lambda的空间站是巨大的。巨大的空间站占据了很大的力量。拥有世界末日设备的巨大空间站需要更多电力。帮助满足车站的力量 需求,指挥官Lambda已经在车站的外表面安装了太阳能电池板。但该站位于类星体量子通量场的中间,这对太阳能造成严重破坏 面板。你和你的心腹团队已被指派修理太阳能电池板,但你不能在不关闭空间站的情况下立刻将它们全部拆下来(以及所有那些讨厌的人 生命支持系统!)。
您需要弄清楚任何给定阵列中哪些面板可以脱机修复,同时仍保持每个阵列的最大功率输出量,并且这样做,你会 首先需要弄清楚每个阵列的最大输出实际是多少。写一个函数答案(xs),它取一个表示每个面板的功率输出电平的整数列表 array,并返回这些数字的某些非空子集的最大乘积。因此,例如,如果阵列包含功率输出电平为[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 list)xs = [2,0,2,2,0] 输出: (字符串)“8”
输入: (int list)xs = [-2,-3,4,-5] 输出: (字符串)“60”
使用verify [file]测试您的解决方案,看看它是如何做的。编辑完代码后,使用submit [file]提交答案。如果您的解决方案通过测试用例,它将会 从您的主文件夹中删除。
[编辑]
我调整我的代码如下,我的所有测试用例都按预期返回,但现在除了第一次测试之外的所有测试都失败了(即使我有权访问案例1和2,它们都返回了预期在我的本地计算机上的结果);几分钟后,readme.txt文件中没有测试用例,但在注销后又回到原始文件中。我是否巧妙地错过了一些或者这可能是他们系统上的错误(我只是问,因为我希望通过他们的前两个测试,因为我通过第一个(意味着我的返回类型是正确的)并且第二个失败,即使他们的“输出” “和我的比赛。**请不要提供代码示例,如Fayaz所述,这是一个挑战,我不会为了代表我这样做而进行网络钓鱼(那会有什么乐趣?!)。
[编辑] 重新启动计算机后,我注意到我略微放大了它正在切断文本(这很令人尴尬)我也注意到片刻之后我的代码假设0是默认值,如果值低于0,那就明确没有了工作。在那次小调整之后,一切都过去了,我活到另一天的代码。非常感谢你的帮助/支持!
答案 0 :(得分:1)
[-2, -3, 4, -5] = -120
所以具有最高产品的子集是
[-3,4,-5] = 60
,-2应从子集中排除以获得最大产品。
答案 1 :(得分:1)
输入= [-2,-3,4,-5]的输出应为60。 我会告诉你为什么? 我认为你得到120为(-2)*( - 3) 4 ( - 5)。 但是,此操作的结果是-120,这是此输入可能的最小产品。 输出应该是子集(-3) 4 ( - 5)的60。
如果您有幸被邀请参加foobar挑战,我认为您应该能够对代码进行更改以适应这种情况。 一切都好!