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