KotlinでAtCoder

最近AtCoderJobsのサービスが開始されたこともあり、AtCoderに挑戦し始めている。
経験や書きやすさを考えるとCもしくはC++で解くのがやりやすそうだが、せっかくなのでKotlinで挑戦している。
過去問を含め問題を解いていると毎回同じところで引っかかり、調べることに毎回時間を取られてしまうので記録しておく。
引っかかる事があれば都度追加予定。

標準入出力

入力

val s = realLine()

Stringで入力される。

出力

println(s)

入力の分割

次のように1行で複数の値が入力される場合にListに変換した方が扱いやすい。

A B C

そのまま分割

val s = readLine().split(" ")

ついでにIntに変換

val s = readLine().split(" ").map { it.toInt() }

for文

値指定

Cの

for(int i=0; i<=10; i++)
{
    printf("%d", i);
}

に相当する書き方が

for(i in 0..10) {
    println(i)
}

### イテレーター
Javaの拡張for文的な書き方

for(i in arr) { println(i) }

三項演算子

Kotlinでは

val s = 10 % 2 == 0 ? "Even" : "Odd"

の書き方はできない。 次のように書く。

val s = if(10%2 == 0) {
    "Even"
} else {
    "Odd"
}

少し長くなってしまう。

AtCoderで利用できないこと

AtCoderのkotlinのバージョンは1.0のため、1.1以降に追加された書き方は利用できない。
新しい方法で楽したくなるのが常なので念のために記録する。

rem

1.1で追加。
modがdeprecatedのため普段はremを使う。
今考えると普通に%使えば良かったのでは。

ArrayList

1.1で追加
入力をいじくって追加削除する際にmutableな必要がある。
mutableListOf()addすればほぼ同じ。