gpt4 book ai didi

javascript - 如何从终端读取的最佳方法?卡蒂斯数星星

转载 作者:行者123 更新时间:2023-12-05 07:30:25 25 4
gpt4 key购买 nike

我正在尝试深入研究这个名为 counting stars 的 kattis.com 挑战使用 Node.js。如果你看到输入的例子,它总是以一行两个整数开始,第一个代表行数,第二个代表每行的列数,C 和 Java 有很多例子,但我想用 JS (Nodejs) 解决这个问题。我如何从终端读取并逐行迭代,我尝试了下一个代码

const readline = require('readline');

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

var lines = [];
rl.on('line', line => {
lines.push(line);
console.log(lines);
});

但出于某种原因,如果我输入这个样本

3 10
#-########
----------
#-########

它只显示前 3 行,也尝试使用此行 while (line = readline()) {},但也无法正常工作,因为 readline 不是函数

在 Java 中,他们使用 Scanner(System.in); 类,并且可能该类使事情变得更容易

最佳答案

您走在正确的轨道上。缺少的部分是添加代码来区分测试用例。最简单的选择可能是将所有行放入一个数组中,在 readline 上收听 “close”,然后一次性同步处理所有内容,根据 ^\d+\d+$ 模式。

但是,这种方法对内存不友好,所以我宁愿一次只使用一个测试用例,单独解决它,然后释放内存:

const readline = require("readline");

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

rl.on("line", line => {
if (/^\d+ \d+$/g.test(line)) {
if (lines.length) {
solve(lines, id++);
lines.length = 0;
}
}
else {
lines.push(line);
}
})
.on("close", () => solve(lines, id));

let id = 1;
const lines = [];

const solve = (grid, id) => {
let count = 0;

// your algorithm here

console.log(`Case ${id}: ${count}`);
};

另见:

关于javascript - 如何从终端读取的最佳方法?卡蒂斯数星星,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52350647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com