Archive for 2015年12月|Monthly archive page

projecteuler28

 projecteuler問題28は、自然数をらせん状に並べ、角の数値のみを足した和を求めるもの。といっても、一辺が 1001 になるまでですが(笑)
 スクリプトは単純、

(let (i 1 j 2 lst '(1))
  (while (< j 1001)
    (dotimes (k 4) (++ i j) (push i lst -1))
    (++ j 2))
   (println lst)
   (apply + lst)
   )

 こんな感じ。一週ごとに求める自然数の間隔が2つずつ増えていくのがミソ。
 これを実行すると

(1 3 5 7 9 13 17 21 25 31 37 43 49 57 65 73 81 91 101 111 121 133 145 157 169 183 
 :
 986049 987043 988037 989031 990025 991021 992017 993013 994009 995007 996005 997003 
 998001 999001 1000001 1001001 1002001)
669171001
> 

 答え 669171001 が求まります。

 以上、如何でしょうか?