HackerEarth:如何从STDIN读取并写入STDOUT?

时间:2020-10-11 19:23:00

标签: javascript stdout stdin

这里有谁解决了HackerEarth上的问题?我对它们提供输入数据的方式感到困惑。

到目前为止,我一直在使用Leetcode来解决问题,对此我感到很满意,但是不幸的是,有些人更喜欢HackerEarth来进行编码挑战,而我在尝试正确阅读输入测试用例时遇到了问题。

以这个为例:https://www.hackerearth.com/practice/algorithms/searching/ternary-search/practice-problems/algorithm/small-factorials/submissions/

我做了研究,发现他们的“解决方案指南”中包含错误的信息:https://www.hackerearth.com/docs/wiki/developers/solution-guide/

我将如何读取各行并将结果输出到JS(节点v10)判断器中?

谢谢。

2 个答案:

答案 0 :(得分:2)

  • 只需登录并查阅here

  • 似乎与我不喜欢的HackerRank相似。 (LeetCode的UI很有趣,而且更易于使用。)

  • 在LeetCode上,我们不必打印输出,在这里看来我们必须打印输出(例如,在JavaScript中,我们将使用console.log而不是在方法内部进行打印通常是不良做法编码)。

此解决方案(从其中一项活动复制)似乎正在传递,您可以根据该解决方案进行解决:


/*
// Sample code to perform I/O:

process.stdin.resume();
process.stdin.setEncoding("utf-8");
var stdin_input = "";

process.stdin.on("data", function (input) {
    stdin_input += input;                               // Reading input from STDIN
});

process.stdin.on("end", function () {
   main(stdin_input);
});

function main(input) {
    process.stdout.write("Hi, " + input + ".\n");       // Writing output to STDOUT
}

// Warning: Printing unwanted or ill-formatted data to output will cause the test cases to fail
*/

// Write your code here


process.stdin.resume();
process.stdin.setEncoding("utf-8");
var stdin_input = "";
process.stdin.on("data", function (input) {
    stdin_input += input;
});
process.stdin.on("end", function () {
   main(stdin_input);
});
function main(input) {
    input = input.split('\n');
    input.shift();
    input.forEach(n => {
        n = parseInt(n);
        let fact = BigInt(1);
        while(n){
            fact = BigInt(fact) * BigInt(n);
            n--;
        }
        console.log(String(fact).replace('n',''));
    });
}

答案 1 :(得分:0)

在这里访问输入 HackerEarth 与 leetcode 和 Hacker Rank 相比有所不同,您必须按行号从标准输入 (STDIN) 中提取输入,您可以找到更多详细信息 here

例如,如果输入的格式如下
输入格式:
第一行包含整数 N。
第二行包含字符串 S。

然后您将通过新行(“\n”)拆分标准输入并逐行访问每个输入

下面是如何在 JavaScript 中访问输入的示例

var input1 = 0;
var input2 = "";
var stdin_input = ""
process.stdin.on("data", function (input) {
    // Reading input from STDIN
    stdin_input += input;  
    input1 = stdin_input.split("\n")[0] 
    input2 = stdin_input.split("\n")[1]

    console.log("input1 = ", input1)
    console.log("input2 = ", input2)
                       
                             
});
相关问题