如何在Hackerrank和Hackerearth中使用Javascript?

Kan*_*n T 15 javascript node.js

嗨,我是竞争性编程的新手,我知道的唯一语言是Javascript但是如果我选择javascript选项我甚至无法理解如何获取输入以及如何在两个站点中打印输出的一些问题是Hackerrank代码看起来像这样

function processData(input) {
//Enter your code here
} 
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
  _input += input;
});

process.stdin.on("end", function () {
  processData(_input);
});
Run Code Online (Sandbox Code Playgroud)

对于某些问题,在同一个hackerrank中,初始代码看起来像这样

process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;

process.stdin.on('data', function (data) {
 input_stdin += data;
});

process.stdin.on('end', function () {
  input_stdin_array = input_stdin.split("\n");
 main();    
});

function readLine() {
  return input_stdin_array[input_currentline++];
}

/////////////// ignore above this line ////////////////////

function main() {
  var n = parseInt(readLine());
}
Run Code Online (Sandbox Code Playgroud)

而在hackerearth中,初始代码看起来像这样

   function main(input) {
        //Enter your code here
        process.stdout.write("Hello World!");
    }

    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);
    });
Run Code Online (Sandbox Code Playgroud)

如果有人给我一个程序的例子如何在这些网站上获取输入和打印输出或使用javascript的那些网站的任何解决的程序也将我猜.

Pan*_*kla 18

我们来自HackerEarth的一个简单示例:https://www.hackerearth.com/practice/basic-programming/input-output/basics-of-input-output/practice-problems/algorithm/find-factorial/

要提供解决方案,您需要执行以下操作:

function main(input) {
    //Enter your code here
    var num = parseInt(input, 10);//This line expects input to be a string so convert to an int as per problem
    var res=1;
    for(var i=num;i>1;i--) {
        res *= i; 
    }
    process.stdout.write(res);//This is how you write output.
} 
Run Code Online (Sandbox Code Playgroud)

编辑:

以下是你如何在hackerrank中做到这一点:

function main() {
    var n = parseInt(readLine());
    var strN = n.toString();//<-- Convert int n to string
    for(var i=1;i<=10;i++) {
        process.stdout.write(strN+" x "+i+" = "+n*i);//<-- formatting the 
                                                     //question requires
        process.stdout.write("\n");//<-- newline
    }
}
Run Code Online (Sandbox Code Playgroud)

差异似乎是在HackerRank中,您需要自己将输出转换为字符串.希望能帮助到你!

编辑2:

对于多行输入,例如:

5 1
1 2 3 4 1
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

function main(input) {
    //Enter your code here
    var data = input.split('\n');
    var firstLine = data[0].split(' ');
    var len = firstLine[0];
    //process.stdout.write('length:'+len);
    var toFind = firstLine[1];
    //process.stdout.write('toFind:'+toFind);
    //process.stdout.write('\n');
    var arr = data[1].split(' '); 
    //process.stdout.write(arr);
    for(var i=len-1;i>=0;i--) {
        if(arr[i] == toFind){
            process.stdout.write(i+1);
            return;
        }
    }
    process.stdout.write(-1);
}
Run Code Online (Sandbox Code Playgroud)

请注意,输入是多行的,因此首先需要通过执行将其拆分为多行var data = input.split('\n');.每个拆分将为您提供中间有空格的字符串.所以,要获得单个角色,你必须再次分裂,但这次是空间之类的var firstLine = data[0].split(' ');.一旦获得所有输入,您就可以编写自己的算法了.请注意,我也留下了评论,以便您知道如何在编辑器中进行调试.

顺便说一下,这个解决方案也有效,是一个公认的解决方案

希望这也有帮助!


小智 7

function main(input) {
let [first, second] = [...input.split("\n")];

 // do what ever you want here with inputs.
}
Run Code Online (Sandbox Code Playgroud)

就这么简单:) 快乐编码。


Muj*_*bas 6

让我们举一个来自 HackerEarth 的简单例子:

https://www.hackerearth.com/practice/basic-programming/input-output/basics-of-input-output/tutorial/

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){
    var data = input.split('\n');
    var num = parseInt(data[0],10);
    var str = data[1];
    process.stdout.write(num *2 + "\n" + data[1]);
    

}
Run Code Online (Sandbox Code Playgroud)

样本输入:

5

你好,世界

示例输出:

10

你好,世界

首先我们以字符串的形式读取输入,然后我们将其转换为数组并分配给新的变量数据,这些数据看起来像 ["5", "helloworld"]