Python 在列表中均匀分布(Google Foobar:最大相等)

Python 在列表中均匀分布(Google Foobar:最大相等),python,list,python-2.7,Python,List,Python 2.7,这个问题来自GoogleFoobar,我的代码通过了除最后一次测试之外的所有测试,输入/输出隐藏 提示 换句话说,选择数组的两个元素x[i]和x[j] (i不同于j),同时将x[i]增加1并减小 x[j]乘以1。您的目标是让数组中有尽可能多的元素 尽可能等额 例如,如果数组为[1,4,1],则可以执行这些操作 详情如下: 将兔子从第一节车厢发送到第0节车厢:递增x[0],递减 x[1],导致[2,3,1]将兔子从第一辆车送到第二辆车: 增量x[2],减量x[1],导致[2,2,2] 数组中的所有

这个问题来自GoogleFoobar,我的代码通过了除最后一次测试之外的所有测试,输入/输出隐藏

提示 换句话说,选择数组的两个元素x[i]和x[j] (i不同于j),同时将x[i]增加1并减小 x[j]乘以1。您的目标是让数组中有尽可能多的元素 尽可能等额

例如,如果数组为[1,4,1],则可以执行这些操作 详情如下:

将兔子从第一节车厢发送到第0节车厢:递增x[0],递减 x[1],导致[2,3,1]将兔子从第一辆车送到第二辆车: 增量x[2],减量x[1],导致[2,2,2]

数组中的所有元素现在都相等,并且 向Beta Rabbit报告的策略

请注意,如果数组为[1,2],则最大可能的 我们可以得到的元素是1,因为汽车永远不会有相同的元素 里面有多少只兔子

编写一个函数answer(x),它接受整数x和 返回可以获得的最大相等数组元素数,通过 根据需要多次执行上述命令

列车中的车厢数量(x元素)至少为2, 而且不超过100个。想要共享汽车的兔子数量 (x的每个元素)将是范围为[01000]的整数

我的代码 它在我自己的测试目的下运行良好,在大约10秒钟内处理了一百万次尝试。但它在未知输入下失败


我是否错过了一些明显的东西,或者我是否做出了一个不应该错过的假设?

对不起,您的代码在我的测试中不起作用。我输入了[0,0,0,0,22],得到了一个[5,5,4,4,4]的列表,答案是3;最多4辆相同的汽车,原始输入就是这样一个例子。[4,4,4,4,6]将是另一个。我怀疑这就是你的问题,数据库中还有很多其他类似的例子

对于N辆汽车,最大值为N(如果兔子数量可被汽车数量整除)或N-1。这看起来很简单,我担心我在这个问题上遗漏了一个限制。它没有要求人口平衡,只是尽可能多的汽车人口应该是平等的。简言之:

def answer(census):
    size = len(census)
    return size if sum(census) % size == 0 else (size-1)

你能评论一下你的代码吗?我不知道你为什么要这么做。foobar会告诉你你是因为回答错误还是因为花了太长时间而失败吗?@Adam——我这样理解,[4,4,4]是正确的解决方案:它给出了3辆相同编号的汽车,而不是2辆。@AdamSmith清楚地说——根据需要多次执行上述命令。不止两次。请再次尝试编辑;你丢失了代码格式。哇,干得好。我肯定想得太多了。非常感谢!(注意:您的代码需要
sum(普查)
作为回报。)谢谢。我认为它来自于数字分析、数论,以及在学校的Putnam考试团队工作两年,再加上软件QA的职业生涯。我花了很多时间寻找后门。问题的说明表明,您应该“根据需要多次执行上述命令”返回尽可能多的汽车数量,这意味着从x[I]中加上或减去,同时减去或加上x[j],其中I。虽然确定兔子的数量是奇数还是偶数将分别给出len(x)-1或len(x),但这并不一定满足问题的本质(实际分配兔子)。也许不满足,尽管我质疑包含多余操作的问题描述的“精神”。上述解决方案可以很容易地改变,以处理个人运动。首先计算汽车1所需的目标兔子数量:(N-1)。在数组中迭代j;每次普查[j]>target时,找到最低i,以便普查[i]def answer(census): size = len(census) return size if sum(census) % size == 0 else (size-1)