からだのブログ

五体満足に生まれてきたことに感謝してブログの名前を「からだ」にしました。

からだのブログ header image 2

Project Euler + Scala #8

5月 24th, 2010 · No Comments · projectEuler, Scala

今更だろうが 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 でエレガントに書けるってことがまずある。そして何より問題文(英文)を逆から読んでいくと、ほとんどコードそのままになるところが気に入ったから。ってか、日本語の場合はそのままだ。こういうのはとても素敵だ。

Tags: