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