VBScriptでFizzBuzz
(30/34)
にゃののんさんの日記より
http://d.hatena.ne.jp/nyanonon/20070510
どうしてプログラマに・・・プログラムが書けないのか?
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
何も考えずに書いたらN88BASIC風プログラムだった。
実行環境が無かったので,あとでVBScriptに書き換えた。
その際,VBScriptのmodの書式が判らず,Webで検索したのでわしはプログラマにはなれません。
しかも,特にひねりを効かせたわけでもないので,見てもあまり面白くないと思われる。
modを使えなかった場合も追記。
FizzBuzz.vbs
以下をコピーしてエディタに貼り付け,『適当な名前.vbs』で保存。
保存したファイルをダブルクリックで計算結果を表示するハズ。
その1
ii = "" For i = 1 to 100 Call keisan() next WScript.echo ii Sub keisan() if i mod 3 = 0 and i mod 5 = 0 then ii = ii & "FizzBuzz," Else if i mod 3 = 0 then ii = ii & "Fizz," Else if i mod 5 = 0 then ii = ii & "Buzz," Else ii = ii & i & "," End If End If End If End Sub 'i mod 3 のかわりに i/3 - int(i/3) でもいいかな。
追記
mod の使い方が判らなかったときはこう書くかな。
ついでに,Ifの順番を改善してElseを使わないようにする。
いずれ,変数の扱いが適当なので,わしはプログラマになれそうもありません。
その2
ii = "" i3 = 0 i5 = 0 For i = 1 to 100 i3 = i3 + 1 i5 = i5 + 1 Call keisan2() next WScript.echo ii Sub keisan2() j = i if i3 = 3 then j = "Fizz" i3 = 0 End If if i5 = 5 then j = "Buzz" i5 = 0 End If if i3 = 0 and i5 = 0 then j = "FizzBuzz" End If ii = ii & j & "," End Sub
はじめてはてなの「pre記法」を使った。