我为什么得到〜在stdout上没有响应〜在黑客排名中的nodejs

时间:2019-09-21 23:25:16

标签: node.js

请知道例如如何在hackerrank上使用stdin和stdout运行功能

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
}
}

然后使用过程。 stdin和stdout逻辑显示结果

3 个答案:

答案 0 :(得分:1)

Hackerrank文档中没有提到这一点。

这就是我的工作方式。

// It will work on Javscript(nodejs), not sure about others
fs.createWriteStream(process.env.OUTPUT_PATH).write("Your Output");

答案 1 :(得分:1)

对我来说,写对我有用的东西

process.stdout.write("some answer")

答案 2 :(得分:0)

查看正在使用的函数的使用方式。例如,对于getPrimes,请在HackerRank 内置代码中查找getPrimes的其他用途。例如,在sample test中,有一个问题要求我完成一个findNumber函数:

'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();
}

在行中调用函数findNumber

const res = findNumber(arr, k);

,其返回值分配给res如果使用了被调用函数的返回值,则应该始终返回一个值。否则,如果未使用它,例如该行刚刚

findNumber(arr, k);

然后返回值将被忽略,因此您的输出可能取决于调用console.log的方式。

在您的情况下,您应该可能 return getPrimes中的一个值,以便HR可以解析它。不确定挑战的要求是什么,但也许像

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;
}

或遵循这些原则的东西-如果在某个地方使用了return调用的结果,只需确保在最后getPrimes进行了一些处理。