求可用2018 Google Code Jam Node.js提交模板,本地正常提交报运行错误
当然有不少开发者成功用Node.js搞定过2018 Google Code Jam的提交!你的runtime error大概率是输入输出的处理方式没适配Code Jam的在线评判环境——本地用fs读文件没问题,但在线环境是通过标准输入输出传递数据的,直接读文件肯定会报错。
给你一个经过验证的模板,专门解决这个问题:
适配Google Code Jam的Node.js模板
这个模板用标准输入输出处理数据,完全符合Code Jam的评判要求:
const readline = require('readline'); // 建立标准输入的读取接口 const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: false }); let inputBuffer = []; let linePointer = 0; // 逐行收集输入内容 rl.on('line', (line) => { inputBuffer.push(line.trim()); }); // 所有输入读取完毕后执行解题逻辑 rl.on('close', () => { // 读取测试用例总数 const testCaseCount = parseInt(inputBuffer[linePointer++]); for (let caseNum = 1; caseNum <= testCaseCount; caseNum++) { // 根据题目要求读取当前测试用例的输入 // 示例:这里读一行作为当前用例的输入,你可以根据题目调整读取行数 const currentInput = inputBuffer[linePointer++]; // 调用你的解题函数 const result = solve(currentInput); // 严格按照Code Jam要求的格式输出结果 console.log(`Case #${caseNum}: ${result}`); } }); // 替换成你自己的解题逻辑 function solve(input) { // 示例:返回输入内容的大写形式,实际替换为你的算法 return input.toUpperCase(); }
关键注意事项(帮你避坑)
- 绝对不要用
fs模块读文件:在线评判系统不会提供本地测试文件,所有输入都来自标准输入,用fs会直接触发文件不存在的错误,导致runtime error。 - 严格遵守输出格式:必须是
Case #X: 结果的格式,大小写、空格都不能错,哪怕结果正确,格式不对也会被判失败。 - 确保输入读取完成再处理:
readline是异步的,一定要在close事件里执行解题逻辑,不然可能还没读完所有输入就开始处理,导致数据缺失。 - 处理异步逻辑(如果有的话):如果你的解题函数里有异步操作(比如Promise),要改用
async/await确保逻辑执行完毕再输出结果,避免程序提前退出。
你之前的代码用了fs,这应该就是问题根源——本地能读到你自己的测试文件,但在线环境里没有这个文件,直接抛出错误。把你的solve逻辑移到这个模板里,应该就能正常提交了。
内容的提问来源于stack exchange,提问作者kirilloid
相关产品推荐
相关产品推荐

