如何在 Kattis 问题解决中分割线?
How to line split in Kattis problem-solving?
我目前正在 Kattis 进行一些测试,但遇到了困难 with this one。到目前为止,我编写的代码在 Visual Studio 代码中给出了最后一个 else 语句 when console.logging 。如果我输入一个低于 100 的数字,它会给我第一个 if 语句,但是 Kattis 只会给我错误。问题出在哪里?
我正在使用 JavaScript (Nodejs)。
下面是我正在处理的代码:
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', (line) => {
var n = line.split(' ');
for (var i = 0; i < n.length; i++) {
var r = parseInt(n[i][0]);
var e = parseInt(n[i][1]);
var c = parseInt(n[i][2]);
if (r > e - c) {
console.log("do not advertise");
}
else if (r < e - c) {
console.log("advertise");
} else {
console.log("does not matter");
}
}
});
你可以拿一个标志来获取第一行,如果你有行号,只需拆分行来获取值。
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var first = true;
rl.on('line', (line) => {
if (first) {
n = +line;
first = false;
return;
}
if (!n || !n--) return; // exit early for not needed lines
var [r, e, c] = line.split(' ').map(Number); // take numbers
if (r > e - c) {
console.log("do not advertise");
} else if (r < e - c) {
console.log("advertise");
} else {
console.log("does not matter");
}
});
这里有一个比 稍微简单的选项,使用 .once("line", ...)
跳过第一行:
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.once("line", line => // collect the first line; in this case, discard it
rl.on("line", line => { // register another listener to handle the rest
const [r, e, c] = line.split(/ +/).map(Number);
if (e - c > r) {
console.log("advertise");
}
else if (e - c < r) {
console.log("do not advertise");
}
else {
console.log("does not matter");
}
})
);
Kattis 将自动发送 EOF,因此无需跟踪 n
。
当您需要从第一行收集数据时,请参阅 Getting input in Kattis challenges - readline js 以获取有关一般情况的帮助,and/or 想要在所有行都被消耗后打印单个结果。
我目前正在 Kattis 进行一些测试,但遇到了困难 with this one。到目前为止,我编写的代码在 Visual Studio 代码中给出了最后一个 else 语句 when console.logging 。如果我输入一个低于 100 的数字,它会给我第一个 if 语句,但是 Kattis 只会给我错误。问题出在哪里?
我正在使用 JavaScript (Nodejs)。
下面是我正在处理的代码:
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', (line) => {
var n = line.split(' ');
for (var i = 0; i < n.length; i++) {
var r = parseInt(n[i][0]);
var e = parseInt(n[i][1]);
var c = parseInt(n[i][2]);
if (r > e - c) {
console.log("do not advertise");
}
else if (r < e - c) {
console.log("advertise");
} else {
console.log("does not matter");
}
}
});
你可以拿一个标志来获取第一行,如果你有行号,只需拆分行来获取值。
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var first = true;
rl.on('line', (line) => {
if (first) {
n = +line;
first = false;
return;
}
if (!n || !n--) return; // exit early for not needed lines
var [r, e, c] = line.split(' ').map(Number); // take numbers
if (r > e - c) {
console.log("do not advertise");
} else if (r < e - c) {
console.log("advertise");
} else {
console.log("does not matter");
}
});
这里有一个比 .once("line", ...)
跳过第一行:
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.once("line", line => // collect the first line; in this case, discard it
rl.on("line", line => { // register another listener to handle the rest
const [r, e, c] = line.split(/ +/).map(Number);
if (e - c > r) {
console.log("advertise");
}
else if (e - c < r) {
console.log("do not advertise");
}
else {
console.log("does not matter");
}
})
);
Kattis 将自动发送 EOF,因此无需跟踪 n
。
当您需要从第一行收集数据时,请参阅 Getting input in Kattis challenges - readline js 以获取有关一般情况的帮助,and/or 想要在所有行都被消耗后打印单个结果。