#runtime "hsp3cl"」は省略。repeat 100,1:t=""+cnt:if cnt\3=0{t="Fizz"}if cnt\5=0{t="Buzz"}if cnt\15=0{t="FizzBuzz"}mes t:loop
"FizzBuzz"を消したい。repeat 100,1:t="":if cnt\3=0{t="Fizz"}if cnt\5=0{t+"Buzz"}if t=""{mes cnt}else{mes t}loop
repeat 100:i+:t="":if i\3=0{t="Fizz"}if i\5=0{t+"Buzz"}if t=""{mes i}else{mes t}loop
repeat 100:i+:t="":if i\3=0{t="Fizz"}if i\5=0{t+"Buzz"}if t=""{t=i}mes t:loop
do:i+:t="":if i\3=0{t="Fizz"}if i\5=0{t+"Buzz"}if t=""{t=i}mes t:until i>99
while i<100:i+:t="":if i\3=0{t="Fizz"}if i\5=0{t+"Buzz"}if t=""{t=i}mes t:wend
for i,1,101:t="":if i\3=0{t="Fizz"}if i\5=0{t+"Buzz"}if t=""{t=i}mes t:next
結果、 do ~ until マクロを使ったスクリプトと for ~ next マクロを使ったスクリプトが、それぞれ 75 バイトで最短でした。う~ん、 t="" と if t="" が無駄っぽく感じます...む~、三項演算子か、文字列の掛け算( "hoge"*3 が "hogehogehoge" とか)できたら、もうちょっと短くなるんだけどなー。短く出来そうで出来ないこの感覚が...
今見直せば短くできるところはありました。
repeat$64:i+:t="":if$=i\3{t="Fizz"}if$=i\5{t+"Buzz"}if""=t{t=i}mes t:loop
for i,1,101:t="":if$=i\3{t="Fizz"}if$=i\5{t+"Buzz"}if""=t{t=i}mes t:next
$ なんかを使ってスペースを削ってます。
文字列の掛け算(繰り返し、リフレイン)を追加するパッチ - chaperattaの日記なんかを使えばもっと短くできるのになー。もちろん公式なHSPで動くコードじゃないのでこれは認めない。
repeat$64:i+:t="Fizz"*($=i\3):if$=i\5{t+"Buzz"}if""=t{t=i}mes t:looprepeat$64:i+:t="Fizz"*($=i\3)+"Buzz"*($=i\5):if""=t{t=i}mes t:loop