Python错误 - Google Foobar

Kod*_*bla 14 google-chrome runtime-error python-2.7

对于之前完成Google Foobar挑战的任何人,您是否遇到过这样的错误?

Verifying solution...
{
"bytes" : "CAAaIgogQ291bGQgbm90IGZpbmQgJ2Fuc3dlcicgZnVuY3Rpb24"
}
Run Code Online (Sandbox Code Playgroud)

我已经在Visual Studio中测试了我的解决方案,它工作正常,并提供准确的输出.我只有36个小时的时间来提交我的解决方案,这是最后的挑战,所以我真的很想获得完成它.这是我要验证的代码:

from fractions import *
from math import factorial as fac

def cycle_index(n):
    return [(coeff(term), term) for term in foo(n, n)]

def foo(n, lim):
    soln_set = []
    if n > 0:
        for x in range(lim, 0, -1):
            if x == 1:
                soln_set.append([(1, n)])
            else:
                for y in range(int(n / x), 0, -1):
                    recurse = foo(n - x * y, x - 1)
                    if len(recurse) == 0:
                        soln_set.append([(x, y)])
                    for soln in recurse:
                        soln_set.append([(x, y)] + soln)
    return soln_set

def coeff(term):
    val = 1
    for x, y in term:
        val *= fac(y) * x ** y
    return Fraction(1, val)

def cross(cycle_a, cycle_b):
    term = []
    for len_a, freq_a in cycle_a:
        for len_b, freq_b in cycle_b:
            lcm = len_a * len_b / gcd(len_a, len_b)
            term.append((lcm, int(len_a * freq_a * len_b * freq_b / lcm)))
    return term

def answer(w, h, s):
    total = 0
    cycidx_cols = cycle_index(w)
    cycidx_rows = cycle_index(h)
    for col_coeff, col_cycle in cycidx_cols:
        for row_coeff, row_cycle in cycidx_rows:
            coeff = col_coeff * row_coeff
            cycle = cross(col_cycle, row_cycle)
            value = 1
            for _, power in cycle:
                value *= s ** power
            total += coeff * value
    return total
Run Code Online (Sandbox Code Playgroud)

我上周找到了别人的解决方案并通过Foobar验证了它,但我想自己编写以获得更深入的了解.我并排比较了结果,它们是准确的,所以我知道我的代码可以得到准确的结果.

出于好奇,我只是重新验证了另一个人的解决方案,现在我得到了相同的错误,输出略有不同,即使我上周尝试时效果很好:

Verifying solution...
{
"bytes" : "CAEQARABEAEQARABEAEQARABEAEQAQ"
}
Run Code Online (Sandbox Code Playgroud)

我不知道还能去哪儿.我非常兴奋,我已经提出了自己的挑战解决方案,但现在我感到恐慌,这无关紧要.有什么建议?

更新 - 2018年6月29日,美国中部标准时间下午6:00
截止日期为我昨晚通过,我无法及时提交我的代码.我确保recruitme在时间用完之前使用该命令以防我被启动.但是,我仍然可以查看我当前的状态,它让我要求另一个5级挑战.因此,我将定期检查测试用例是否再次出现,并确保在他们这样做时更新.我强烈建议较低级别的任何人等到我在尝试请求其他挑战之前确认此问题已得到解决.

更新 - 2018年6月30日,
美国中部标准时间早上5点根据@RobertAnsel发现的模式,我完成了挑战.我通过硬编码answer函数来确认这种模式,以输出指令中给出的测试用例的解决方案.结果错误与预测输出完全匹配.我还在Google的支持论坛(此处链接)上发现了一个有趣的帖子,其中类似的事情发生在一群Foobar挑战者身上.似乎他们的错误是在大约三天之后由谷歌修复的,但遗憾的是,看起来很多超时的人都没有获得另一次机会.然而,这可能会在第二天或第二天内自行解决.我将继续尝试验证并提交我的解决方案,直到我成功为止.

更新 - 2018年7月4日,美国中部时间凌晨12:00 这个问题似乎或多或少得到了解决.有关详细信息,请参阅所选答案.非常感谢@RobertAnsel的帮助!一些额外的信息:我能够验证我当前的挑战,但在提交后,我被告知我的问题时间已经过期.再次登录后,我能够申请新的挑战.我注意到我也能recruitme再次使用该命令.我不确定这是否意味着他们没有收到第一个请求,或者您是否被允许多次使用该命令.无论如何,我感到宽慰,我能够继续前进Foobar.祝你们其他人好运!

Rob*_*sel 11

这可能不是您正在寻找的答案,但第一个"字节"字符串是以下错误消息的base64编码:

"无法找到'回答'功能".

我自己完成了Foobar挑战,只有当你试图验证一个缺少定义的"答案"功能的文件时才应该这样做,显然你不是这样.你确定他们提供的规范有3个参数vs一个有3个项目的数组吗?

第二条消息(CAEQARABEAEQARABEAEQARABEAEQAQ)虽然有效的base64,但不映射到ASCII或UTF-8.在仔细分析了其他人发布的其他一些字符串之后,我得出结论,这是测试输出的base64编码版本.它不是人类可读的,但我相信它是11个2字节块,第一个是无用的,但以下10个是每个相应测试用例的测试结果.在此消息的情况下,它转换为二进制为:

0000100000000001 <- unknown pre-pended info
0001000000000001 <- passing test 1
0001000000000001 <- passing test 2
0001000000000001 <- passing test 3
0001000000000001 <- passing test 4
0001000000000001 <- passing test 5
0001000000000001 <- passing test 6
0001000000000001 <- passing test 7
0001000000000001 <- passing test 8
0001000000000001 <- passing test 9
0001000000000001 <- passing test 10
Run Code Online (Sandbox Code Playgroud)

每条线末尾的'1'表示所有10个测试都在通过.

失败的测试用例由以下字符串表示:

0001000000000000 <- failing test case
Run Code Online (Sandbox Code Playgroud)

这应该可以帮助您(和其他人)继续测试以实现完全通过测试(您可以使用以下工具完成自己的分析:https://cryptii.com/base64-to-binary),但不幸的是,这对您无济于事推进您的最终提交,直到Google在问题结束时解决问题.

更新:7月2日,太平洋时间下午8点 在与几位 Google招聘人员讨论此问题之后,他们能够确认该问题已经确定并且相信今天已得到解决.如果在对代码进行更改后重新保存代码(空格应该没问题),您应该能够正确地测试和提交.或者,您现在也可以申请新的挑战.