2017-04-20 95 views
3

你好我是一個競爭性編程的新手我知道的唯一的語言是Javascript,但是如果我選擇JavaScript選項我甚至不明白如何獲得輸入以及如何在一些問題的網站中輸出這些問題是Hackerrank代碼看起來像這如何在Hackerrank和Hackerearth中使用Javascript?

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

而且在一些問題的初始代碼看起來像這樣

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); 
    }); 
相同hackerrank

如果有人給我一個程序的例子如何獲得這些網站的輸入和打印輸出或使用JavaScript的這些網站的任何解決方案也將做我猜。

+0

也許你應該閱讀這些網站上的文檔?只是一個想法。既然你用'node.js'標記了這個,你可能還想閱讀那裏的文檔。只是在說。 – gforce301

+0

@ kannucodert14如果我提供的解決方案有所幫助,您是否會更新我?這肯定會對hackerearth有所幫助,hackerrank應該不會有太大的不同? –

+0

@PankajShukla明天我會檢查並更新你的兄弟。謝謝 – Kannan

回答

5

讓我們從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. 
} 

編輯:

這裏是你怎麼能這樣做它在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(' ');這樣的空間。 一旦你完成了所有的輸入,你只需要編寫自己的算法。 請注意,我也留下了評論,以便您知道如何在編輯器中進行調試。

順便說一句,這個解決方案也可以工作,並且是一個可接受的解決方案。

希望這也有幫助!

+0

Hi Bro在hackerearth上完美地工作,而在hackerrank中,它並不把這個作爲一個示例問題https://www.hackerrank.com/challenges/30-loops現在在這裏如果我嘗試打印像這樣的process.stdout。寫(N);它顯示沒有輸出,而如果寫入process.stdout.write(「hi」+ n);它打印hi2我以爲輸出將只需要字符串,所以我轉換爲res = n.toString(),我試圖寫甚至它沒有工作任何想法?謝謝 – Kannan

+0

上面的解決方案,你給的鏈接問題也在HackerRank工作。你試過了嗎? –

+0

是的兄弟確實它的工作原理也解決了HackerRank中的其他問題,但是在Hackerearth中存在一個問題,如果它超過2個輸入,例如https://www.hackerearth.com/practice/algorithms/searching/linear-搜索/教程/這個問題,如果它是在C我只會做scanf(「%d,」,N)和scanf(「%d,」,M)來獲得輸入,而在JS中我只能得到一個輸入那個問題 – Kannan