今更だろうが Project Euler っていう数学の問題が大量に集められたサイトがある。
それを Scala で解くのがすごく楽しい。例えばこんな問題。
#8 「Find the greatest product of five consecutive digits in the 1000-digit number. (1000桁の数字の中から連続する 5 桁の数字を選び出し、その各桁(5)の積を考える。このとき最大のものを求めよ。)」
// Scala 2.8 or higher required val str1000digits = "731671765313306249192251196744265747..." // 省略 str1000digits.sliding(5).map(v => v.map(_.asDigit).product).max
こんだけ。普段 Java とか使ってる人は、コードで書いたらどうなるか考えてみてほしい。(Ruby とかならもっと短いかもしれない)
俺がわざわざこの問題を取り上げたのは、Scala でエレガントに書けるってことがまずある。そして何より問題文(英文)を逆から読んでいくと、ほとんどコードそのままになるところが気に入ったから。ってか、日本語の場合はそのままだ。こういうのはとても素敵だ。