有没有人能够在 node.js 中成功提交 google code jam 2018 的解决方案?我对读取和输出数据的“样板”感兴趣。

事情就是我尝试过的,它说“运行时错误”,没有任何进一步的细节,所以我必须用另一种语言编写?

这个解决方案在本地对我有用。

此外,我将我的解决方案转换为另一种语言并且它刚刚工作,所以我很确定问题出在样板中,而不是在解决方案中。

const fs = require('fs');

function solve(shield, program) { ... }

var content = fs.readFileSync(0, 'utf8');
var lines = content.split(/\r?\n/);
var cases = +lines[0];

var out = [];
for (var i = 1; i <= cases; i++) {
    var [shield, program] = lines[i].split(' ');
    var result = solve(+shield, program);
    out.push(`Case #${i}: ${result === -1 ? 'IMPOSSIBLE' : result}`);
}

fs.writeFileSync(1, out.join('\n'));

最佳答案

您的代码的问题是您正在读取文件并写入文件。这就是为什么它适用于您本地。

Google Code Jam 竞赛格式在 2018 年发生了变化。您不再读取和写入文件,而是应该从标准输入读取并写入到标准输出。请参阅 relevant FAQ section here 。谷歌还为他们新的交互式数字猜测问题 here 发布了一个示例 nodejs javascript 解决方案。

您也可以引用 GitHub 上的 my solutions。我用它通过了资格赛。我还为我的解决方案创建了测试(基于 jest )。它还不是一个理想的样板文件,但希望它可以帮助您入门。

关于node.js - 谷歌代码堵塞 2018 node.js 样板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49731802/

10-09 16:59