« 素因数分解 | トップページ | Project Euler - Problem 2 »

2009年5月29日 (金)

またまた、 Problem 1

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


なぜ、今更「Problem 1」なのかというと…… Ruby でやるならいろいろなやり方ができるはずなので、「このくらい簡単な問題ならバリエーションを考える余裕があるかな?」と思ったわけです。

# Integer#times sum = 0 1000.times {|x| sum = sum + x if x % 3 == 0 or x % 5 == 0} puts(sum) # Integer.upto sum = 0 1.upto(999) {|x| sum = sum + x if x % 3 == 0 or x % 5 == 0} puts(sum) # Range#each sum = 0 (1...1000).each {|x| sum = sum + x if x % 3 == 0 or x % 5 == 0} puts(sum) # while sum = 0 x = 1 while x < 1000 sum = sum + x if x % 3 == 0 or x % 5 == 0 x = x + 1 end puts(sum) # Array#select lst = (1...1000).select{|x| x % 3 == 0 or x % 5 == 0} puts(lst.inject(:+)) # Array#delete_if lst = (1...1000).reject{|x| x % 3 > 0 and x % 5 > 0} puts(lst.inject(:+)) # さらに…… sum = (1...1000).inject(0) do |v, x| if x % 3 == 0 or x % 5 == 0 v = v + x else v end end puts(sum) # Integer#step No.1 sum = 0 [3, 5].each do |i| 0.step(999, i) {|x| sum = sum + x} end 0.step(999, 15) {|x| sum = sum - x} puts(sum) # Integer#step No.2 lst = Array.new(1000, 0) [3, 5].each do |i| 0.step(999, i) {|x| lst[x] = x} end puts(lst.inject(:+))

一応、このくらいは考えてみたのですが、もっと他にもあるんだろうなぁ…… 。

おもしろいコードを考えついた方は、是非お知らせください。

« 素因数分解 | トップページ | Project Euler - Problem 2 »

Project Euler」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く

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

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

トラックバック

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

この記事へのトラックバック一覧です: またまた、 Problem 1:

« 素因数分解 | トップページ | Project Euler - Problem 2 »

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            
フォト

最近のトラックバック

無料ブログはココログ