FizzBuzz問題

FizzBuzz問題を解く

もともとの記事はこれ↑らしい。
それに対していろいろな反応があって、ちょっと外側から面白がっていた。
google:FizzBuzz問題], [google:FizzBuzzテスト
問題そのものは前に見たことあって、見た瞬間書けそうだったので書かないでいたけど、ちょっとダメらしい人がやっぱりいるとの書き込みなどをちょっと見たりして、「もしかしてなんかオチがあるのか??」と自分のことも心配になり、Rubyで書いてみた。

  • 新規テキストファイルを開き、問題文をコピペするのに30秒程度。
  • Range機能を使ったことがなかったけど、あいまいな記憶のままに書いたら間違っていて、Range機能をググって確認するのに1分弱。
  • to_sメソッドもあいまいな記憶のままに書いたらtosと覚えていたらしく、その確認に1分弱。
  • 後は実際のコーディングで、やると決めてから完了まで5分弱でした。

って、最初に思い浮かんだコードのままでほとんど問題なしでした。うーん、これがたとえば15分かかっても書けない人とは同等に仕事できないよね。30分かかっても出来ない人は同じプロジェクトにプログラマとしていてほしくない。
もしかして使う言語によって差があるのかな?

### fizzbuzz.rb ###

# 1から100までの数をプリントするプログラムを書け。
# ただし3の倍数のときは数の代わりに「Fizz」と、
# 5の倍数のときは「Buzz」とプリントし、
# 3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

print "=== FizzBuzz ===\n"

for i in 1..100 do
  str = ""
  if i%3==0
    str += "Fizz"
  end
  if i%5==0
    str += "Buzz"
  end
  if str == ""
    str = i.to_s
  end
  print str + "\n"
end

FizzBuzz問題を解く#2

FizzBuzz問題について、はてダのanonymous diaryに上がっていたのだが、これが面白い。
FizzBuzz問題
通常の問題に「ただし、剰余(Rubyでいう % 演算子や modulo)を使うな。」という制限が加えられていた!
おぉー、これは面白そう〜。と、1分少々考えて計3,4分で上記コードを修正して書いたのが次のコード。
まぁ、最低レベルだろうな。

# 1から100までの数をプリントするプログラムを書け。
# ただし3の倍数のときは数の代わりに「Fizz」と、
# 5の倍数のときは「Buzz」とプリントし、
# 3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
#
# *** ただし剰余は使うな ***
#

print "=== FizzBuzz2 ===\n"

c3 = 0
c5 = 0
for i in 1..100 do
  str = ""

  c3 += 1
  if c3==3 then
    str += "Fizz"
    c3 = 0
  end

  c5 += 1
  if c5==5 then
    str += "Buzz"
    c5 = 0
  end

  if str == ""
    str = i.to_s
  end
  print str + "\n"
end