Clojure入門 - Project Eulerを解いてみる 問28
数字の渦の角の和。
5x5の渦の時、角の数字は1, 3, 5, 7, 9, 13, 17, 21, 25。
それを1x1、3x3、5x5の層に分けるなら[1] [3, 5, 7, 9] [13, 17, 21, 25]となる。
1x1を無視するなら、各層で[n2 - 3(n-1), n2 - 2(n-1), n2 - (n-1), n2]となっている。これは渦の特性からも導き出される。
なのでコードに落とし込むなら以下のようになる。
(->> (range 3 (inc 1001) 2) (map #(- (* 4 % %) (* 6 (dec %)))) (apply +) inc)
最後に1x1の部分を足しておくのを忘れずに。