Archive for 2015年6月|Monthly archive page
projecteuler22
projecteuler22
projecteuler の 問題22 は、names.txt にある名前をアルファベット順に並べ、全ての名前の順位と名前のアルファベットの値和と積を求め、その総量を求める問題。アルファベットの値は A, B, C,… が 1, 2, 3,… に相当。
url にあるデータは get-url で取り出し、sort でソートすれば、後は計算するだけ。繰り返しには dolist でも使いましょうか。文字列の分解には explode が使えます。
さて、コードは、
(silent)
(setq names (replace "," (parse (get-url "https://projecteuler.net/project/resources/p022_names.txt"))))
(sort names)
(let (res 0)
(dolist (n names)
(++ res (* (+ $idx 1) (apply + (map (fn (x) (- x 0x40)) (map char (explode n)))))))
(println res))
こんな感じ。これを実行すれば、
871198282
という答えが得られます。
silent 文を外せば、names.txt にある名前がすべて表示されます。お好みでどうぞ。
以上、如何でしょうか?