如何在Hackerrank和Hackerearth中使用Javascript?

时间:2017-04-20 19:16:22

标签: 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);
});

对于某些问题,在同一个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());
}

而在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);
    });

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

4 个答案:

答案 0 :(得分:15)

让我们从HackerEarth中举一个简单的例子: https://www.hackerearth.com/practice/basic-programming/input-output/basics-of-input-output/practice-problems/algorithm/find-factorial/

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

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

修改

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

5 1
1 2 3 4 1

差异似乎是在HackerRank中,您需要自己将输出转换为字符串。 希望它有所帮助!

<强> EDIT2

对于多行输入,例如:

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

你可以这样做:

var data = input.split('\n');

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

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

希望这也有帮助!

答案 1 :(得分:4)

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

 // do what ever you want here with inputs.
}

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

答案 2 :(得分:2)

让我们以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]);
    

}

样本输入:

5

helloworld

示例输出:

10

helloworld

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

答案 3 :(得分:0)

// 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) {
    var data = input.split('\n');
    var firstLine = data[0].split(' ');
    var secondLine = (data[1].split(' '));
    let arr = [];
    for(let i=0;i<secondLine.length;i++){
        arr.push(parseInt(secondLine[i]));
    }
    findMininimum(arr);
    //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
function findMininimum(input){
console.log(Math.min(...input));
}