Как организовать стандартный ввод и стандартный вывод данных при решении простой арифметической задачи в NODE
Пытаюсь решать задачи в ЯндексКонтест. По условию задачи ввод и вывод данных нужно организовать через стандартный ввод и стандартный вывод на NODE.js. Из условия задачи: "Даны два числа A и B. Вам нужно вычислить их сумму A+B. В этой задаче вам нужно читать из стандартного ввода и выводить ответ в стандартный вывод". Вот мой код.
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin});
let lines = [];
rl.on('line', (line) => {
lines.push(line);
}).on('close', () => {
const [a, b] = lines;
const c = Number(a) + Number(b);
process.stdout.write(String(c));
});
Проверку системой яндекса он не проходит. Система сообщает: "wrong output format Expected integer, but "NaN" found".
Есть похожая задача. По условию которой нужно сопоставить 2 строки. На вход приходит 2 строки, на выход нужно вывести количество совпадений. Код который проверку системой Яндекса проходит:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin
});
let lines = [];
rl.on('line', (line) => {
lines.push(line);
}).on('close', () => {
const [jewels, stones] = lines
let result = 0;
for (let i = 0; i < stones.length; i++) {
if (jewels.includes(stones.charAt(i))) {
++result;
}
}
process.stdout.write(result.toString());
});
Ввод и вывод своей задачи про сложение чисел делал по аналогии. Не пойму почему не работает.
Из текста ошибки которая выдала система проверки можно предположить что ей не нравится то что я возвращаю строку в кодеprocess.stdout.write(String(c));. Но если вернуть число то интерпритатор ругается примерно так: " The "chunk" argument must be of type string or an instance of Buffer or Uint8Array.". Пробовал так:
let buffer = new ArrayBuffer(16);
let view = new Uint8Array(buffer);
view[0] = c;
process.stdout.write(c);
Тоже не проходит. Хочу понять почему не работает мой код. Заранее благодарю за ответы и советы
Ответы (1 шт):
Как справедливо подсказал Yaant мой код был рассчитан на то, что на вход придут 2 строки по одному числу в каждой. Хотя в задании четко прописано что придет одна строка с числами разделенными пробелом. Поэтому рабочий код будет таким:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin
});
let lines;
rl.on('line', (line) => {
lines = line.split(' ');
}).on('close', () => {
const [a, b] = lines;
const c = Number(a) + Number(b);
process.stdout.write(c.toString());
});
Сложить можно было и с применением Reduse. В общем надеюсь что мой код будет полезен кому нибудь. И спасибо Yaant за подсказку.