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記法」を使った。