re_id中谷歌的foobar bug

时间:2017-08-21 10:19:21

标签: python google-foobar

今天我刚决定解决Google foobar挑战,但我在第一次挑战中看到了一个错误。这是第一次挑战的自述文件:

  

重新ID

     

在奴才行列中有一些不安:具有身份证号码的仆从如#34; 1"," 42"以及其他"好"数字已经记录在那些陷入更多无聊身份证的穷人身上。为了平息骚乱,指挥官Lambda已经责成你根据她的完全万无一失的计划重新分配每个新的随机身份证。

     

她用一根长串连接了素数:" 2357111317192329 ......"。现在每个小兵都必须从帽子中抽出一个数字。该数字是该素数串中的起始索引,并且该minion的新ID号将是该字符串中的下五位数。因此,如果一个小兵画出" 3",他们的身份证号码将是" 71113"。

     

帮助Commander通过编写函数answer(n)来分配这些ID,该函数接收Lambda的所有素数字符串的起始索引n,并返回字符串中的后五位数字。指挥官Lambda有很多小兵,所以n的值总是在0到10000之间。

     

测试用例    输入:       (int)n = 0   输出:       (字符串)" 23571"

     

输入:       (int)n = 3   输出:       (字符串)" 71113"

所以问题是最后一行。它表示如果输入为3,则输出应为" 71113"这是错误的,因为3后的第一个素数绝对是5;那么输出应该是" 57111"。

因此谷歌不接受我的python代码因为我认为5是素数:)

2 个答案:

答案 0 :(得分:0)

我认为你没有正确理解这个问题它说函数answer(n)它接受Lambda所有素数字符串的起始索引n,然后返回字符串中接下来的五位数。。仔细阅读。你会看到你的错误。

答案 1 :(得分:0)

2是零素数,至少就这个挑战而言:

  

测试用例输入:(int)n = 0输出:(字符串)“23571”

那么5是第二个素数,而不是第三个,而7是第三个,而不是第四个。

但至少你得到一条特定的错误信息。我在IntelliJ中通过了我的JUnit测试但是foo.bar的验证解决方案说我的代码中有一些“错误”并且稍后再试。

P.S。 Wolfram Mathematica可能更符合您的喜好,因为数组索引从1开始而不是0。