FizzBuzz for VBS 8
fslashtさめ経由、FizzBuzz問題をVisualBasic Scriptで実行してみた。
他言語と比較するまでもなく簡単に実装可能ですなぁ…。
なお、FizzBuzz.vbsを単体実行すると、WScript.Echo() はWindows Formのメッセージボックスを表示する。
OKボタンを100回押すことになるので注意されたし。
'
' 1.以下のスプリクトをテキスト形式で保存。
' ファイル名:FizzBuzz.vbs
' 2.コマンドプロンプトで実行する。
' cscript //NoLogo FizzBuzz.vbs | more
'
Option Explicit
Dim iLoop ' ループカウンタ
Dim strMsg ' メッセージ出力
For iLoop = 1 to 100 step 1
strMsg = ""
' 3で割り切れる値ならFizzをセット。
If ((iLoop Mod 3) = 0) then
strMsg = "Fizz"
end if
' 5で割り切れる値ならBuzzをセット。
If ((iLoop Mod 5) = 0) then
If (RTrim(strMsg) <> "") then: strMsg = strMsg & space(1)
strMsg = strMsg & "Buzz"
end if
' 上記以外の場合は数値をセット。
If (RTrim(strMsg) = "") then: strMsg = CStr(iLoop)
Call WScript.Echo(strMsg)
next
# すらどでコードを公開するのはこれが初めてかもしれず。
----
2007/06/26 17:00 追記
初エントリからちょうど4年が経過してました。
cscriptなら (スコア:1)
# 短いですね。
M-FalconSky (暑いか寒い)
Re:cscriptなら (スコア:1)
明日試してみよう…。
># 短いですね。
精通している言語があれば、設問(FuzzBuzz問題)を答えるのは苦労しませんね。
ただ、VBSだと他言語への応用がほとんど効かない・思いつかないなぁと思うところもありまして…。
Re:cscriptなら (スコア:0)
<c:\hoge>cscript fizzbuzz.vbs
とすればいいのでは?
はてなで…… (スコア:1)
人生は七転び八起き、一日は早寝早起き
Re:はてなで…… (スコア:1)
という考え方に該当するコードが思いつきません。orz
プログラミングというか、数学的な教養がないと辛いです…なんとなく。
Re:はてなで…… (スコア:0)
Option Explicit
Dim iLoop ' ループカウンタ
Dim iFizz ' Fizz カウンタ
Dim iBuzz ' Buzz カウンタ
Dim strMsg ' メッセージ出力
iFizz = 3
iBuzz = 5
For iLoop = 1 to 100 step 1
strMsg = ""
' 3で割り切れる値ならFizzをセット。
If (iLoop = iFizz) then
strMsg = "Fizz"
iFizz = iFizz + 3
Re:はてなで…… (スコア:0)
>If (RTrim(strMsg) "") then: strMsg = strMsg & space(1)
If (RTrim(strMsg) = "") then: strMsg = strMsg & space(1)
それと重要な問題ではないが個人的には
>strMsg = strMsg & "Buzz"
strMsg = Trim(strMsg & "Buzz")
としたくなる。
まあ、それはともかく「少しでもコードを書けるか見る」のが目的だと考えると、(1a)1~100までループで回す(1b)3,5の倍数までループで回す
という基本的な制御文と(2)nと等しくなったらという判断処理だけ解れば書ける、
という2点だけ知っていれば出来る、剰余まで使う事のは邪道という事なら正解かも。
でもそれだとTrimは反則って気がしますね、馬鹿正直に判断文かけば済むと思いますが。
Re:はてなで…… (スコア:0)
(1)プログラムが少しでも書けるかのテストに用いるもの
だから基本的な構文だけで書ければよい
ていうか基本以上の命令使ったらアウト
(2)プログラムが少し以上書ける人間には切り詰めたり
変な言語で書いてみたりチャレンジするもの
だからあらゆる手をつかっていい
http://golf.shinh.org/p.rb?FizzBuzz [shinh.org]