15

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

Verifying solution...
{
"bytes" : "CAAaIgogQ291bGQgbm90IGZpbmQgJ2Fuc3dlcicgZnVuY3Rpb24"
}

我已经在 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

我上周找到了别人的解决方案,并通过Foobar进行了验证,但我想自己写一个更深入的了解。我已经并排比较了结果,它们是准确的,所以我知道我的代码给出了准确的结果。

出于好奇,我只是再次尝试验证其他人的解决方案,现在我得到了相同的错误,输出略有不同,尽管上周尝试时它工作得很好:

Verifying solution...
{
"bytes" : "CAEQARABEAEQARABEAEQARABEAEQAQ"
}

我不知道还能去哪里。我很兴奋,因为我想出了自己的解决方案来应对挑战,但现在我很恐慌,因为这无关紧要。有什么建议么?

更新 - 2018 年 6 月 29 日下午 6:00 CST
昨晚我的截止日期已经过去,我无法及时提交我的代码。我确保recruitme在时间用完之前使用该命令,以防我被启动。但是,我仍然可以查看我当前的状态,这让我可以请求另一个 5 级挑战。因此,我将定期检查测试用例是否再次开始出现,并且我一定会在它们出现时进行更新。我强烈建议较低级别的任何人等到我确认此问题已解决,然后再尝试请求另一个挑​​战。

更新 - 2018 年 6 月 30 日上午 5:00 CST
根据@RobertAnsel 找到的模式,我已经完成了挑战。answer我通过对函数进行硬编码以输出说明中给出的测试用例的解决方案来确认这种模式。由此产生的错误与预测的输出完全匹配。我还在 Google 的支持论坛(此处链接)上发现了一个有趣的帖子,其中类似的事情发生在一群 Foobar 挑战者身上。看起来他们的错误在大约三天后被谷歌修复了,但不幸的是,看起来很多超时的人也没有再给过一次机会。不过,这可能会在一两天内自行解决。我将继续尝试验证并提交我的解决方案,直到我成功。

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

4

2 回答 2

11

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

“找不到‘答案’功能”。

我自己完成了 Foobar 挑战,只有在您尝试验证缺少定义的“答案”功能的文件时才会发生这种情况,显然您不是。你确定他们提供的规范有 3 个参数而不是一个有 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

每行末尾的“1”表示所有 10 个测试都通过了。

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

0001000000000000 <- failing test case

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

更新:太平洋夏令时间 7 月 2 日晚上 8 点 在与几位 Google 招聘人员就该问题联系后,他们能够确认该问题已被确定,并且相信今天会得到解决。如果您在更改代码后重新保存代码(空白应该没问题),您应该能够正确测试和提交。或者,您现在无论如何都可以请求新的挑战。

于 2018-06-28T06:27:51.663 回答
4

您将无法解决此问题,这是 Google 网站上的一个问题,因为我发现 Google Foobar API 正在响应此消息。

尽管如此,您最好的选择是使用该feedback命令并向 Google Foobar 提供反馈并将其标记为错误。这将更有可能引起他们的注意并帮助他们解决此问题!

于 2018-06-27T18:50:10.180 回答