自分のツイートを見た限り取り敢えず動くのを出すのに15分の間があったけども実際はもうちょこっと早いかな?
実行はCscriptです。そのまま実行すると100回ポップアップしますので注意。
意味もなくFizz Buzzでもやってみますかね
— 黒い野良猫 (@black_stray_cat) 2014, 2月 13
でけた
— 黒い野良猫 (@black_stray_cat) 2014, 2月 13
たしか初回コードがこれ。ルールをまんま処理した感じですね
For i = 1 To 100
s=""
s=""
if i mod 3 = 0 then s = "Fizz"
if i mod 5 = 0 then s = s & "Buzz"
if s="" then s=i
if s="" then s=i
wsh.echo s
Next
というか普通に3の倍数5の倍数なら15の倍数でいいじゃないか・・
— 黒い野良猫 (@black_stray_cat) 2014, 2月 13
出来た11分後に3・5倍数は15でいいと気づくが何とも・・・。整理したのがこれ
for i=1 to 100
s="FizzBuzz":if i mod 15 then s="Fizz":if i mod 3 then s="Buzz":if i mod 5 then s=i
wsh.echo s
next
modで余剰を出していますが「余剰値=0」の比較記述は入れていません。
過去の記事でも軽く触れていますがif内処理は数値で言えば0がfalseとnot0がtrueと言った感じで処理できます。
処理順はツイートした通りです。
一行版はこれ
for i=1 to 100:s="FizzBuzz":do while i mod 15:s="Fizz":do while i mod 3:s="Buzz":do while i mod 5:s=i:exit do:loop:exit do:loop:exit do:loop:wsh.echo s:next
まぁ私のソースだとちょくちょくあるソースですがかなりおすすめしません。見ずらいですからね。
こっちは140字にまとまらなかったのでツイートしていないので少し説明。基本的には上と同じです。
ネストはこうなります。
for i=1 to 100
s="FizzBuzz"
do while i mod 15
s="Fizz"
do while i mod 3
s="Buzz"
do while i mod 5
s=i
exit do
loop
exit do
loop
exit do
loop
wsh.echo s
next
do whileもif同様0はfalseと同じように処理されます。
処理順はツイートした通りです。
初期値FizzBuzzで15で割り切れる場合0でif終了。15で割り切れない場合Fizzにし、3で割り切れる場合0でif終了。3で割切れない場合Buzzにし、5で割り切れる場合0でif終了。最後まで割り切れない場合ループカウンタiを格納。
— 黒い野良猫 (@black_stray_cat) 2014, 2月 13
一行版はこれ
for i=1 to 100:s="FizzBuzz":do while i mod 15:s="Fizz":do while i mod 3:s="Buzz":do while i mod 5:s=i:exit do:loop:exit do:loop:exit do:loop:wsh.echo s:next
まぁ私のソースだとちょくちょくあるソースですがかなりおすすめしません。見ずらいですからね。
こっちは140字にまとまらなかったのでツイートしていないので少し説明。基本的には上と同じです。
ネストはこうなります。
for i=1 to 100
s="FizzBuzz"
do while i mod 15
s="Fizz"
do while i mod 3
s="Buzz"
do while i mod 5
s=i
exit do
loop
exit do
loop
exit do
loop
wsh.echo s
next
do whileもif同様0はfalseと同じように処理されます。
15で割れない、3で割れない、5で割れないとネストが深くなり最終的に割れなければループカウンタを格納します。
0 件のコメント:
コメントを投稿