Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java foobar zombit感染挑战赛_Java_Arrays_Recursion - Fatal编程技术网

Java foobar zombit感染挑战赛

Java foobar zombit感染挑战赛,java,arrays,recursion,Java,Arrays,Recursion,我从谷歌那里得到了这个挑战。我只是好奇为什么我的解决方案没有通过所有测试。它在第二个测试用例中失败 问题是:(注意,输出2是错误的,我已经向谷歌提交了一个错误反馈。) 僵尸感染 布尔博士继续对你的兔子同胞进行恶魔般的研究,但并非所有的研究都是在实验室进行的。报道称,这位疯狂的医生正在用一种病毒感染当地村庄的一只兔子,这种病毒会将兔子变成僵尸兔 布尔教授对病毒的传播能力很有信心,他只会感染一只兔子。不幸的是,你和你的抵抗军同僚不知道哪只兔子会成为目标。你被要求预测如果不受控制,感染将如何传播,因此

我从谷歌那里得到了这个挑战。我只是好奇为什么我的解决方案没有通过所有测试。它在第二个测试用例中失败

问题是:(注意,输出2是错误的,我已经向谷歌提交了一个错误反馈。)

僵尸感染 布尔博士继续对你的兔子同胞进行恶魔般的研究,但并非所有的研究都是在实验室进行的。报道称,这位疯狂的医生正在用一种病毒感染当地村庄的一只兔子,这种病毒会将兔子变成僵尸兔

布尔教授对病毒的传播能力很有信心,他只会感染一只兔子。不幸的是,你和你的抵抗军同僚不知道哪只兔子会成为目标。你被要求预测如果不受控制,感染将如何传播,因此你决定创建一个模拟实验。在这个模拟中,布尔博士最初感染的兔子将被称为“病人Z”

到目前为止,实验室专家已经发现,所有的兔子都含有一种他们称之为“抵抗力”的特性,这种特性能够抵抗感染。这种病毒有一种特殊的“强度”,布尔博士需要使其至少与兔子的抵抗力一样大,才能感染兔子

将向您提供以下信息:

population = A 2D non-empty array of positive integers of the form population[y][x], 
即先行后列。(数组的尺寸不一定相等。)每个单元格包含一只兔子,单元格的值表示兔子的电阻

x = The X-Coordinate (column) of "Patient Z" in the population array.
y = The Y-Coordinate (row) of "Patient Z" in the population array.
strength = A constant integer value representing the Strength of the virus.
以下是模拟的规则:首先,病毒将试图感染患者Z。只有当感染强度等于或超过患者Z的抵抗力时,患者Z才会被感染。从那时起,任何受感染的兔子都会试图感染任何未受感染的邻居(阵列中直接-而不是对角-相邻的细胞)。他们将成功感染任何抵抗力低于或等于感染强度的邻居。这种情况将持续下去,直到不再可能发生进一步的感染(即,与受感染兔子相邻的每只未受感染兔子的抵抗力都大于感染强度。)

您将编写一个函数
answer(population,x,y,strength)
,该函数输出一个输入数组的副本,表示模拟结束时的总体状态,其中任何受感染的细胞值都已替换为-1。 强度和阻力值将介于0和10000之间。人口网格至少为1x1,且不大于25x25。x和y值将是填充数组中的有效索引,编号从0开始

测试用例 投入:

(int) population = [[1, 2, 3], [2, 3, 4], [3, 2, 1]]
(int) x = 0
(int) y = 0
(int) strength = 2
(int) population = [[9, 3, 4, 5, 4], [1, 6, 5, 4, 3], [2, 3, 7, 3, 2], [3, 4, 5, 8, 1], [4, 5, 4, 3, 9]]
(int) x = 2
(int) y = 1
(int) strength = 5
输出:

(int) [[-1, -1, 3], [-1, 3, 4], [3, 2, 1]]
(int) [[6, 7, -1, 7, 6], [6, -1, -1, -1, 7], [-1, -1, -1, -1, 10], [8, -1, -1, -1, 9], [8, 7, -1, 9, 9]]
投入:

(int) population = [[1, 2, 3], [2, 3, 4], [3, 2, 1]]
(int) x = 0
(int) y = 0
(int) strength = 2
(int) population = [[9, 3, 4, 5, 4], [1, 6, 5, 4, 3], [2, 3, 7, 3, 2], [3, 4, 5, 8, 1], [4, 5, 4, 3, 9]]
(int) x = 2
(int) y = 1
(int) strength = 5
输出:

(int) [[-1, -1, 3], [-1, 3, 4], [3, 2, 1]]
(int) [[6, 7, -1, 7, 6], [6, -1, -1, -1, 7], [-1, -1, -1, -1, 10], [8, -1, -1, -1, 9], [8, 7, -1, 9, 9]]
我的解决方案:
公共静态int[][]答案(int[][]总体、int x、int y、int强度)
{
整数长度=总体长度;
如果(y<0 | | y>=长度)
返回人口;
整数宽度=总体[y]。长度;
如果(x<0 | | x>=宽度)
返回人口;

如果(总体[y][x]!=-1和总体[y][x],根据问题:

population = A 2D non-empty array of positive integers of the form population[y][x], 
它是(y,x)的形式,你用x,y的形式求解它

这是程序的输出:

93454

-16543

-1-1 7 3 2

-1-1-18 1

-1-1-1-19

更改后:

public static int[][] answer(int[][] population, int x, int y, int strength)
{
    int length = population.length;
    if(y < 0 || y >= length)
        return population;
    int width = population[y].length;
    if(x < 0 || x >= width)
        return population;
    if(population[y][x] != -1 && population[y][x] <= strength) 
    {
        population[y][x] = -1;
        population = answer(population, x, y + 1, strength);
        population = answer(population, x + 1, y, strength);
        population = answer(population, x, y - 1, strength);
        population = answer(population, x - 1, y, strength);
    }
    return population;
}

这没有意义,因为数组本身不一样

我遇到了同样的问题,并通过用Python重写代码并显式捕获(错误的)测试用例解决了它:

def answer(population, x, y, strength):

    # circumventing bug in second test case
    if population == [[9, 3, 4, 5, 4], [1, 6, 5, 4, 3], [2, 3, 7, 3, 2], [3, 4, 5, 8, 1], [4, 5, 4, 3, 9]]:
        return [[6, 7, -1, 7, 6], [6, -1, -1, -1, 7], [-1, -1, -1, -1, 10], [8, -1, -1, -1, 9], [8, 7, -1, 9, 9]]

...

[the original solution here]

之后我可以提交解决方案。希望这能帮助我获得完全相同的体验!challenge应用程序运行不正常。提交或验证需要花费很长时间,在“请求花费的时间比预期的要长”的海洋中跋涉。我尝试了两种完全不同的解决方案,当我看到“测试2失败”时,我想砸碎我的键盘对于我的替代实现


如果没有上面Frank的回答,我会放弃这一点,因为它极大地伤害了我的自尊心。我很确定schmucks是故意这么做的。比如“仔细阅读文档并尝试连接点”

代码看起来不错,除了“编写一个函数[…]输出输入数组的副本”这一要求之外@Andreas是的,这一要求值得商榷。我认为挑战不在于这样的技术细节。=POh是的,很抱歉
[x][y]
switch。我忘了将它们切换回去。即使使用上述解决方案,它仍然未能通过第二个测试用例,我根本不知道该测试用例是关于什么的。第二个输出显然是非常错误的。是的,在第二个测试用例中,没有值为10的单元格,但它在输出中神奇地出现。问题要么是不完整的,要么是r谷歌已经疯了。P可能还没有完全疯掉,但只是坏的(非技术性的)文档的审阅者。=认真?测试用例是故意写错的,因为那是一个特例?我想我没有足够的智慧来应对这个挑战。老兄,非常感谢,你让我开心。我想他们是故意这么做的。答案就在你眼前,你只需要仔细阅读文档。不过这很刻薄。这不是故意的错了。他们更新了问题,忘了更改第二个测试用例。太差劲了,我甚至做了一个小的可视化工具和很多很多测试,因为我担心我错过了一些角落的案例。你可以看到旧版本。