FizzBuzz を swf で Golf の続き

ySas さんが FizzBuzz を swf で Golf を大幅に改善されていました。このコードの詰まりっぷりはすごいですね。こういうのは僕には書けません。「バイトコード自体の数を小さくしてもよい結果になるとは限らないのがポイント」というのは小細工の話なので、これだけ小さくすれば当然効果が出ると思います。

んで、懲りずに小細工して 140 (135) bytes まで縮めてみました。

http://dame.dyndns.org/misc/fizzbuzz-swf-golf/fizz140.swf
http://dame.dyndns.org/misc/fizzbuzz-swf-golf/fizz135.swf
http://dame.dyndns.org/misc/fizzbuzz-swf-golf/fizz140.txt
http://dame.dyndns.org/misc/fizzbuzz-swf-golf/fizz_base.sswf

sswfflasm を使って以下のようにビルドできます。

$ sswf -c --unprotect -o fizz140.swf fizz_base.sswf && flasm -a fizz140.txt
fizz140.txt successfully assembled to fizz140.swf, 140 bytes

takesako さんのオリジナルの swf には何かゴミが残っていたのか、sswf でスクラッチから書き直しただけで 148 bytes まで減ってしまいました (ちゃんとは調べていません) 。さらに ySas さんのバイトコードに差し替えると 142 bytes 、2 箇所で push しているところをまとめて push して swap するようにして 141 bytes 。で、圧縮アルゴリズムとの相性だと思いますが、EditText の変数名が 'x' だったのを 'z' に変えると 140 bytes になりました。終わりの数バイトを削っても動くのは、誤り訂正のために少し冗長になってるのかなー。