« Project Euler - Problem 22 | トップページ | Project Euler - Problem 24 »

2009年6月27日 (土)

Project Euler - Problem 23

問題はこちらをご覧ください。


今回は計算時間を短くするために、配列を贅沢に使ってみました。

自作の "math_tool.rb" に関してはこちらをご覧ください。

require 'math_tool' MAX = 28123 integer_arr = (0 .. MAX).to_a abu_arr_a = integer_arr.select{|i| i.abundant?} abu_arr_b = Array.new(abu_arr_a) until abu_arr_a.empty? abu_arr_a.size.times do |i| sum = abu_arr_a[i] + abu_arr_b[i] break if sum > MAX integer_arr[sum] = 0 end abu_arr_a.shift end puts integer_arr.inject(:+) # p integer_arr.select{|i| i > 0}

自分の環境では、Ruby 1.9 で約 7 秒で答が出ました。(本当に配列を贅沢に使った甲斐があったのかな?)

« Project Euler - Problem 22 | トップページ | Project Euler - Problem 24 »

Project Euler」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/112020/45471199

この記事へのトラックバック一覧です: Project Euler - Problem 23:

« Project Euler - Problem 22 | トップページ | Project Euler - Problem 24 »

2016年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

最近のトラックバック

無料ブログはココログ