Fizz Buzz問題というのを見て
まぁ試したわけです。
あまり文句を言っても切ないだけなので、概要だけ。
必要なのはこの部分。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
これができない自称プログラマがいるとの記事です。
プログラマーでなくても全体の流れは分かりますよね。
1から100まで順に増やしていって、3で割ってあまりが0ならFizz、5で割ってあまりが0ならBuzz
3も5もどちらも真ならばFizz Buzz、どちらにも属さなければ数字をそのまま表示すれば良いわけですよ。
上の文章を素直にコーディングすれば、まぁこんな感じ?
For i = 1 To 100 If (i Mod 3 = 0) And (i Mod 5 = 0) Then System.Console.WriteLine("Fizz Buzz") ElseIf (i Mod 3 = 0) Then System.Console.WriteLine("Fizz") ElseIf (i Mod 5 = 0) Then System.Console.WriteLine("Buzz") Else System.Console.WriteLine(i.ToString) End If Next
はい、VBプギャーm9ですねw
でも、これさえもができない自称"プログラムできます"な方が大学を出ていると思うと…
まぁこれ以上文句を言うのもやめる。この記事の信憑性の確認もできないしね。
まぁ、あれだ。このコードのコーディング時間より、ブログを書く時間のほうが長いのは秘密だ!!w
追記:どことなく思いついた。
FizzBuzzのときにFizzBazzをまとめた文字列として書く必要のないことに気がついた。
今度はRUBY
(1..100).each{|i| print "Fizz" if i%3 == 0 print "Buzz" if i%5 == 0 print "#{i}" if (i%3)*(i%5) != 0 puts }
FizzBuzzのときはどちらにも当てはまる場合と考えれば、両方を改行せずに出してやればいいわけで。
んで、どちらにも当てはまらない場合のみ、即ち3と5それぞれの剰余の積が0でなかった場合に数字を出すわけですね。(ここちょっと気持ちいいw)
これくらいなら思いつく人はたくさんいるんだろうけれど。
もっとスマートにできるかなー