今流行りのエディタSublimeText2を使って、AOJで競技プログラミングを楽しもう

## どんな言語が使えるの？
使用できる言語は C, C++, C#, C++11, D, Java, Python, Ruby, PHP, JavaScript

## SublimeText2って何？
今流行りのテキストエディタ、まだ使って無い人はここを見てその素晴らしさに開眼しよう
~~[Sublime Text 2ってエディタがすごくイイ。Dreamweaverから乗り換えた時の初期設定とか使い方とかをメモ ](http://mnemoniqs.com/web/sublimetext2/)~~
リンク切れたようなので違うサイトを紹介
@Accent さんありがとうございます。
[”恋に落ちるエディタ”「Sublime Text」 完全入門ガイド！](http://liginc.co.jp/designer/archives/6774)

## AOJって何？
[Aizu Online Judge](http://judge.u-aizu.ac.jp/onlinejudge/index.jsp?lang=ja)の略
出題される問題をプログラムを組んで解き、合否を判定してくれるサイト
問題のタイトルは英語だけど、中身は日本語もあるので即Ｕターンだけはどうか勘弁してやってください

## はじめに
・[SublimeText2](http://www.sublimetext.com/)のインストール
・[AOJのアカウント](http://judge.u-aizu.ac.jp/onlinejudge/register.jsp)作成
この２つをやっておいてください

## SublimeText2のPluginをインストール
[Aizu Online Judge のPlugin](https://github.com/shibainurou/SublimeAizuOnlineJudge)をインストールします
インストール方法はリンク先のREADMEを見てください
settingsファイルのUserNameとPasswordの変更をお忘れなく

## 問題を解いて、AOJにsubmitする
**・問題の選択**
PROBLEMにカーソルを合わせると問題セットが出ます
まずはその中にある`Volume100`の`10000:Hello World`を解いてみます
![問題](https://raw.github.com/shibainurou/qiita/master/image/SublimeAizuOlineJudge/WS000000.jpg) 

**・プログラム作成**
SublimeText2を開いて、`ctrl+shift+p`でCommand Paletteを表示し
`AizuOnlineJudge: Create File`を選択、下にInput Panelが表示されるので使用する言語を入力します
右下を見て使用する言語になっているか確認してください、この例ではRubyを使っています
![syntax](https://raw.github.com/shibainurou/qiita/master/image/SublimeAizuOlineJudge/WS000003.jpg) 

**・AOJにsubmit**
`ctrl+shift+p`でCommand Paletteを開き`AizuOnlineJudge: Submit for Prompt`を選択、Input Panelにこの問題のProblemNo `10000`を入力します

ファイルを保存しながらやりたい場合は、ファイル名にProblemNoをつけて`AizuOnlineJudge: Submit`を使うとファイル名から判断してsubmitします

・Volume0とか問題文英語だよ？
メンドクサイけどJapanese version hereから日本語問題へジャンプしてください
![日本語](https://raw.github.com/shibainurou/qiita/master/image/SublimeAizuOlineJudge/WS000001.jpg) 

・人のソースが見たい
右上の虫眼鏡のアイコンをクリックするとアカウント作るときにSource Code Policy:publicを選択した人のソースを見られます
![ソース](https://raw.github.com/shibainurou/qiita/master/image/SublimeAizuOlineJudge/WS000002.jpg)

### 説明は以上です、れっつえんじょいAOJらいふ！

## コンパイラとシステムの詳細
|言語      |コンパイラ                                 |
|:---------|:------------------------------------------|
|C         |gcc 4.6.3 20120306 (Red Hat 4.6.3-2) (GCC) |
|C++       |gcc 4.6.3 20120306 (Red Hat 4.6.3-2) (GCC) |
|C++11     |gcc 4.6.3 20120306 (Red Hat 4.6.3-2) (GCC) |
|JAVA      |java: version 1.6.0                        |
|C#        |C# mono 2.10.5                             |
|D         |DMD64 D Compiler v2.059                    |
|Ruby      |Ruby 1.8.7                                 |
|Python    |Python 2.7.2                               |
|PHP       |PHP 5.3.14                                 |
|JavaScript|Node.js 0.8.16                             |

## Tips
・入力は入力関数を使う
・順番に出力～と書かれていてもすべて入力してから出力する必要はありません、順次出力してOK
・複数行のスペース区切りを取得する方法

```c:C
while( scanf("%d %d", &a, &b) != EOF )
```

```c++:C++
while( cin >> a >> b )
```

```java:Java
Scanner sc = new Scanner(System.in);
while( sc.hasNext() ){
	String[] line = sc.nextLine().split(" ");
	int a = Integer.parseInt(line[0]);
	int b = Integer.parseInt(line[1]);
}
```

```c#:C#
string line;
while ( !string.IsNullOrEmpty(line = System.Console.ReadLine()) ) {
	string[] ab = line.Split(' ');
	int a = Convert.ToInt32(ab[0]);
	int b = Convert.ToInt32(ab[1]);
}
```

```d:D
while( readf("%d %d\n",&a,&b) ){
}
```

```ruby:Ruby
# nilの時0を返すので、whileの条件でgets.to_iはしない
while line = gets do
	a,b = line.split.map(&:to_i)
end
```

```python:Python
for line in sys.stdin.readlines():
    a,b = map(int, line.strip().split())
```

```php5:PHP
while( TRUE ) {
	fscanf(STDIN, "%d %d", $a, $b);
    if( feof(STDIN) )
        break;
}
```
・複数行のカンマ区切りを取得する方法

```c:C
scanf("%d,%d", &a, &b)
```

```c++:C++
int a, b;
char c;
// cはカンマを抜く為の変数
cin >> a >> c >> b
```

```java:Java
Scanner sc = new Scanner(System.in);
while( sc.hasNext() ){
	String[] line = sc.nextLine().split(",");
	int a = Integer.parseInt(line[0]);
	int b = Integer.parseInt(line[1]);
}
```

```c#:C#
string line;
while ( !string.IsNullOrEmpty(line = System.Console.ReadLine()) ) {
	string[] ab = line.Split(',');
	int a = Convert.ToInt32(ab[0]);
	int b = Convert.ToInt32(ab[1]);
}
```

```ruby:Ruby
line = gets
a,b = line.split(',')
```

```python:Python
line = sys.stdin.readlines()
a,b = map(int, line.strip().split(','))
```

DとPHPのカンマ区切りの上手い方法がわからなかったので、誰か編集リクエストくれたらとっても嬉しいな
これよりこっちのほうがいいよ、もよかったら教えてください