Как использовать Javascript в Hackerrank и Hackerearth?

Привет новичок в конкурентном программировании единственный язык, который я знаю, это 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 также будет делать я думаю.

1 ответов


давайте возьмем простой пример из 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.
} 

EDIT:

вот как вы могли бы сделать это в 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
    }
}

разница в том, что в HackerRank вам нужно преобразовать вывод в строку себе. Надеюсь, это поможет!

EDIT2:

для многострочного ввода, таких как:

5 1
1 2 3 4 1

вы можете сделать это:

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(' ');. Как только у вас есть все входные данные, вы остаетесь с написанием своего собственного алгоритм. Обратите внимание, что я тоже оставил комментарии, чтобы вы знали, как отлаживать в самом редакторе.

кстати, это решение также работает и принятого решения.

надеюсь, это тоже поможет!