javascript : To use in Codeforces
Input
readline()
Reads one line from stdin.
to get some space separated values from a line:
var num = readline().split(" ").map(x => parseInt(x)); // num will be an array [1,2,3]
var x = num[0]; // to store values in different variables.
var y= num[1];
var z= num[2];
var num2= readline(); // reads next line.
Output
print(x); // with auto '\n' (newline)
Refer this submission for a sample program submission.
Node.js : To run your programs locally and submit on CF
readline()
do not work by default if you try to use it locally on your computer.
Write this header code in the beginning of your js code
'use strict';
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', inputStdin => {
inputString += inputStdin;
});
process.stdin.on('end', _ => {
inputString = inputString.trim().split('\n').map(string => {
return string.trim();
});
main();
});
function readline() {
return inputString[currentLine++];
}
// Make a Snippet for the code above this and then write your logic in main();
function main() {
const x = readline();
var line2 = readline();
foo(x);
foo(line2);
}
function foo(x) {
process.stdout.write("hello: "); // without auto '\n' (newline)
console.log(x); // with auto '\n' (newline)
}
Testing Locally
paste your input in a text file input.txt
then
$ cat input.txt | node main.js
output on console.
$ cat input.txt | node main.js > output.txt
output in file.
you can also make a sublime-build file for this and then just press Ctrl+B
Tools> Build System > new build system > nodejs.sublime-build
{ "shell_cmd": "cat $file_path/input.txt | node $file > $file_path/output.txt" }
Here is a Sample Image :)
Auto comment: topic has been updated by RohitKaushal (previous revision, new revision, compare).
Auto comment: topic has been updated by RohitKaushal (previous revision, new revision, compare).
Auto comment: topic has been updated by RohitKaushal (previous revision, new revision, compare).
Why so many thumbs down here?
why too many downvotes on this post?
atleast write your own thoughs not others:)
//node take multiline given number of lines:
const getInput = async (resolve)=>{ const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }); readline.on('line',(line)=>{ readline.close(); resolve(); }) }
const numberOfInputLines = 10;
for (let i = 0, p = Promise.resolve(); i < numberOfInputLines; i++) { p = p.then(_ => new Promise(resolve => getInput(resolve) )); }
You can run javascript code with the V8 JS Engine (it's used once you submit to codeforces) instead of Node to have the
readline
andprint
utilities available both locally and once you submit (just like in the first example).The only issue is that compiling V8 from source takes a lot:D Docs available here: https://v8.dev/docs/build
There's also a feature request proposal at the NodeJS repo for simpler IO processing: see https://github.com/nodejs/node/issues/36184
Thx finally came to know how input work in js.