« Project Euler - Problem 9 | トップページ | Project Euler - Problem 10 »

2009年6月14日 (日)

いまさら "FizzBuzz"

なんでいまさら「FizzBuzz」問題かというと、こんな記事を見つけたんですよ。

この記事の中の「剰余なしで……」というのが面白そうだったから……。

かなり古いエントリーなんだけど、探してみたら同じような話題が結構あったみたい(既に過去形……)。

一般的にはここの一番上の例のように剰余を使いますよね。このパターンは私もかなり前に自分でやってみました(ただしその時は Scheme でしたが……)。

それじゃあ、今度は剰余を使うなと……。


いろいろ考えた結果、Ruby 限定かも知れませんが面白いのができたので、ブログに載せてみようかと思ったわけです。

しかも、「剰余を使わない」どころか、コード上は算術計算を一切していません(そのぶん、裏では Ruby がしっかり計算をしてくれていますが……)。

ということで、今回考えたコードはこれです。

nums = (0 .. 100).to_a a = [[3, "Fizz"], [5, "Buzz"], [15, "FizzBuzz"]] a.each{|arr| 0.step(100, arr[0]){|i| nums[i] = arr[1]}} puts nums.drop(1)

これって、私の好きな配列の内容を上書きしていくパターンです。

どうも、Scheme でコードを書いているうちに、何でもかんでも配列やハッシュに貯め込んで、後から加工する癖がついちゃったみたいです。

« Project Euler - Problem 9 | トップページ | Project Euler - Problem 10 »

Ruby」カテゴリの記事

コメント

なるほど、これは思いつきませんでした。面白いですね。

Integer#step メソッドのある、Ruby だからできた方法ですね。
もし、Integer#step がなければ、どうしても加算が必要になりますからね…。

コメントを書く

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

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

トラックバック

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

この記事へのトラックバック一覧です: いまさら "FizzBuzz":

« Project Euler - Problem 9 | トップページ | Project Euler - Problem 10 »

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

最近のトラックバック

無料ブログはココログ