日下部陽一(void)さんと遊ぼう(3)

ぶっちゃけ、最初、日下部さんがwhileを使った short codeを書いて見せたとき、こいつは全然たいしたこと無いなと思った。


と言うのも for(;;) と while()は同じ文字数だし、while(A) B の形はfor(;A;)B と等価であって最悪のケースにおいてもwhileとforで書いたものは同じ文字数である。まして、while(A) { B C } のようなものもforだとfor(;A;C) B などと書き換えが利くことが多く、for で書いたほうが短い。よって、short coderはwhileなんか使わない。使う必要が無いからだ。*1


そこに不覚にも食らいついてきた日下部さんを見て、この時点で、私の勝ちは決まったも同然だと思った。
ところがそんなに甘くはなかった。攻防の続きをご覧いただこう。


2006年11月20日 08:26 やねうらお


> stを文とするなら
> for(;exp1;exp2)st

ああ、ほんまや(゚Д゚) さすが、よく見てはりますね。

> (forとwhileは等価ではなくcontinueの問題があるので)

continueの動作に関してforとwhileが等価ではないことはもちろんわかっちょりますが、
whileのほうが短くなるケースなんてありますか?


2006年11月20日 08:36 やねうらお


while(exp1) { st1 st2 exp2; }

for(;exp1;) { st1 st2 exp2; }
とは等価なので、whileでcontinueを使うのはforで書いても
最悪のケースにおいても同じ文字数ではないですか?

whileで書くと短くなるケースがあるというのは
全くのデマじゃないですか?←本家に一度言ってみたかった。

ここで訂正とお詫びのゴメンナチャイが来るのかと思いきや、これに対して日下部さんは全く予想外の反論を返してきたのであった。(つづく)

*1:実際、PKUのshort code化で一度もwhileで書かれたコードを見たことが無かった。