Clojure入門 - Project Eulerを解いてみる 問8
非常にでかい数字の連続した13桁の商の最大値を求める。
以下ネタバレ
とりあえず数字をoriginal_string
という文字列として定義。
(require 'clojure.string) (def s (clojure.string/join (map #(clojure.string/trim %) (clojure.string/split original_string #"\n")))) (defn chunk-string [coll n] (loop [col coll output []] (if (< (count col) n) output (recur (rest col) (conj output (take n col)))))) (defn product-string [input-string] (apply *' (map #(Character/digit % 10) input-string))) (println (apply max (map product-string (chunk-string s 13))))
文字列から改行やスペースを取り除き、13桁ずつのシーケンスに変換し、それらの文字を数字に変換して掛け合わせ、最大値を見つける。
文字列の扱い方はまだ慣れない。StackOverflowなどで変換方法やらなにやらを調べて一歩ずつ手探りである。Javaを知っていたらまだ楽なのだろうが・・・