ACM模式算法的输入输出(nodejs-js)
Node.js 竞赛输入片段:逐行读取整数对,以及首行给定测试组数的输入。
#dev
#nodejs
#algorithm
#snippet
#evergreen
[!info] related notes 算法面试题型 MOC
ACM模式算法的输入输出(nodejs-js)
输入约定
以下示例使用 CommonJS,保存为 .cjs 或用于支持 require 的评测环境。每组输入恰好一行、包含两个整数,整数及其和须在 JavaScript 安全整数范围内;超出时应按题目要求使用 BigInt。
readline 的 line 事件移除换行符,不会自动删除行尾空格。只有整数 token 输入才在这里使用 trim() 与 /\s+/;如果题目需要保留空格,不能这样处理。
每行一组,直到 EOF
const readline = require('node:readline');
const rl = readline.createInterface({
input: process.stdin,
crlfDelay: Infinity
});
rl.on('line', (line) => {
if (!line.trim()) return; // 本例约定空行可忽略
const [a, b] = line.trim().split(/\s+/).map(Number);
console.log(a + b);
});
输入 1 2、3 4 两行时,输出 3、7 两行。
首行是测试组数 T
这里整份输入只有一个组数头,不在处理完 T 组后把下一行重新当作组数。需要分块组数的题目应另写状态转换。
const readline = require('node:readline');
const rl = readline.createInterface({
input: process.stdin,
crlfDelay: Infinity
});
let remaining = null;
rl.on('line', (line) => {
if (!line.trim()) return;
if (remaining === null) {
remaining = Number(line.trim()); // 题目保证非负整数
return;
}
if (remaining === 0) return;
const [a, b] = line.trim().split(/\s+/).map(Number);
console.log(a + b);
remaining--;
});
输入:
2
1 2
3 4
输出:
3
7
T = 0 时不输出。模板假定评测输入符合题目格式;若一组数据跨多行,应按题目的 token 数量组织解析,不能把“一行”固定等同于“一组”。
相关笔记
- Node.js Process:标准输入输出与退出行为。
- Node.js MOC