paizaではNode.jsという処理系を用いています。Node.jsを導入するには3つの方法があります。
- Node.jsをインストールする
- Nodistをインストールする
- paiza.ioというサイトを利用する
JavaScriptは動的なサイトを作るための言語であり、HTMLの中に記述するのが普通です。Node.jsは、JavaScriptをブラウザの動作以外で使用するという目的で導入されました。paizaは競技プログラミングという分野のプログラミングを主に扱っています。競技プログラミングではtty(標準入出力を使用したプログラム)を扱うのでJavaScriptではNode.jsという処理系が必要になります。
Node.jsはコールバックという仕組みを多用するので、実は競技プログラミングにおいては記述が難しかったりします。とはいえ、Node.jsが提供するライブラリは種類が限られているのでそれほど学習コストはかかりません。Node.jsで標準入出力を扱うためにはNode.jsのライブラリを使用します。そのドキュメントはNode.jsのサイトにあります。
https://nodejs.org/ja/docs/
もしNode.jsの記述の仕方が分からないのであれば、AOJという競技プログラミングのサイトを併用することをおすすめします。AOJでは、他の解答者のコードを見ることができます。それらのコードを見ることによってより効率的なNode.jsの運用ができるようになります。ただしAOJで導入されているNode.jsのバージョンはpaizaのものよりだいぶ古いです。とはいえ、新しいNode.jsでも古いNode.jsの記述は大抵動作します。
WindowsでNode.jsのデバッグをするときに問題になるのが、標準入力です。WindowsのNode.jsでデバッグし、AOJにアップロードしている私のコードの冒頭を示します。
JavaScript
1//config = {stdin: 'tmp', newline: '\r\n'}; // win
2config = {stdin: '/dev/stdin', newline: '\n'}; // linux
3
4line = require('fs').readFileSync(config.stdin, 'ascii')
5 .split(config.newline, 2);
6
7number = line[0].split(' ');
Windowsでは/dev/stdinが使えないのです。しかもLinuxとは改行コードが異なります。なのでNode.jsにこのような記述をすることでプラットフォームの問題を解決することができます。ただしWindowsのデバッグのために毎回tmpというファイルに入力を書き込んでいます。
冒頭でNode.jsとNodistを紹介しましたが、AOJとpaizaの両方にトライしたい場合はNodistが必須です。NodistではNode.jsのバージョンを簡単にスイッチさせることができます。Node.jsをインストールした場合、古いNode.jsを導入させることは難しいです。それはpaiza.ioでもそうなので、AOJを解きたい場合はNodistをインストールします。