Please who know how to run a function with stdin and stdout on hackerrank for example
function getPrimes(n){
nextPrime:
for (let i = 2; i <= n; i++) { // for each i...
for (let j = 2; j < i; j++) { // look for a divisor..
if (i % j == 0) continue nextPrime; // not a prime, go next i
}
console.log(i) ; // a prime
}
}
then use process. stdin and stdout dunction to display result
Hackerrank documentations haven't mentioned this.
This is how it worked for me.
// It will work on Javscript(nodejs), not sure about others
fs.createWriteStream(process.env.OUTPUT_PATH).write("Your Output");
Look at how the function you're writing is being used. For example, with getPrimes
, look for other uses of getPrimes
in the HackerRank built-in code. For example, from the sample test, there is a question asking me to complete a findNumber
function:
'use strict';
const fs = require('fs');
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', function(inputStdin) {
inputString += inputStdin;
});
process.stdin.on('end', function() {
inputString = inputString.split('\n');
main();
});
function readLine() {
return inputString[currentLine++];
}
// Complete the findNumber function below.
function findNumber(arr, k) {
}
function main() {
const ws = fs.createWriteStream(process.env.OUTPUT_PATH);
const arrCount = parseInt(readLine().trim(), 10);
let arr = [];
for (let i = 0; i < arrCount; i++) {
const arrItem = parseInt(readLine().trim(), 10);
arr.push(arrItem);
}
const k = parseInt(readLine().trim(), 10);
const res = findNumber(arr, k);
ws.write(res + '\n');
ws.end();
}
The function findNumber
is being called in the line
const res = findNumber(arr, k);
with its return value assigned to res
. If the called function's return value is used, you should probably always return a value. Otherwise, if it's not being used, eg if the line was just
findNumber(arr, k);
then the return value is ignored, so your output will probably be determined by what you call console.log
with.
In your case, you should probably return
a value from getPrimes
so that HR can parse it. Not sure what the challenge is asking for, but maybe something like
function getPrimes(n) {
const arrOfPrimes = [];
nextPrime: for (let i = 2; i <= n; i++) { // for each i...
for (let j = 2; j < i; j++) { // look for a divisor..
if (i % j == 0) continue nextPrime; // not a prime, go next i
}
arrOfPrimes.push(i);
}
return arrOfPrimes;
}
or something along those lines - just make sure something is being return
ed at the end, if the result of the getPrimes
call is being used somewhere.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With