AOJでjavaScript(node.js)が使えることに気づいたので早速やってみたのですが、非同期I/Oでプロコンするのはなかなか斬新な体験だった(皮肉です)ので、後世のために残しておきます。
入力が馬鹿みたいにでかかったり変則的な形式を取る問題の場合、これじゃ対処できないです。でも、そもそもNode.jsで競技プログラミングしようっていう発想が間違ってるので、そういうときは諦めてRubyとかPython使ってください。自分で入力を処理しようとすると多分詰みます。
procon-template.js
function main() {
//ここで問題を解く
//`input` に入力が改行で区切られた配列として入ってくるので頑張って
}
var
input = '';
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function(chunk) {
input += chunk;
});
process.stdin.on('end', function() {
input = input.split('\n');
main();
});
多分、入力の無い問題を上記のコードをベースにして解いたらコケると思いますがそこはさすがに判断してください。
その2
procon-template2.js
var fs = require('fs'),
length = fs.fstatSync(process.stdin.fd).size,
buffer = new Buffer(length),
bytesRead = fs.readSync(process.stdin.fd, buffer, 0, length, 0),
input = buffer.toString('utf8', 0, bytesRead).split('\n');
main();
function main(){
// do something
}
こっちは入力の有無は関係なしです。
その分、パイプラインで流し込む必要がありますが。
なんで会津大学はよりによってnode.jsを選んだんだよ…。
ちなみに僕はnode.jsで AOJ 109 Smart Caluculator を解いたのですが、それはそれで非常に罠がありました。そっちのコードは gist に貼っておいたので興味ある人は覗いてみてください。