日下部陽一(void)さんと遊ぼう(8)
2006年11月20日 09:39 Kusakabe
もっと精進してくださいね。
2006年11月20日 09:40 Kusakabe
3日考えてもわからないようでしたら、
http://mixi.jp/view_bbs.pl?id=5346384&comm_id=258747
これを送ってくれれば教えます ;-)
※ 上記のurlは本日の画像であるレニエのお菓子のスレだった。
うむ、考えときま!(`ω´)
この時点で、私はこのあとどう日下部さんを追い込むかを思案していた。
まず、whileがforより短い場合があるというのはマクロ絡みだと思って間違いない。次に、
while(exp1) { st1 st2 exp2; }
と
for(;exp1;) { st1 st2 exp2; }
で、st1に何かがくれば等価ではなくなるというのは、この一つ前の私の書き込みを日下部さんが誤読して返答してしまった可能性はある。しかし、そうだとしたら、ここは徹底的に突っついてみたい。
だが、もうひとつの可能性が無くはない。つまり、「st1に〜」のくだりは“アレ”のことを言っている可能性もあるのだが、そうだとしたらあまりにもショーモナイので、そういう言い逃れが出来ないようにここで縛りを入れておきたい。
あるいは、日下部さんの用意しているのは、それよりさらにショーモナイ答えかも知れない。つまり、
printfやputsなんかつかわなければさらに。
と書いてあったが、これ自体、意味不明だ。ここに来て「自作言語の日下部99では〜」などと言い出されると興ざめだ。これも先手を打って防止しておきたい。そこで以下のように追い込むことにした。
2006年11月21日 14:57 やねうらお
日下部さん> whileのほうが短くなるパターンありますよ。
> 典型的な例を考えてみてください。
> 少しは練習になることでしょう。うーむ思いつかないなぁ(´ω`)
いくつか確認させてください。
言語はC言語ですよね?ここで「俺様のオリジナル言語で」とか言われてもなぁ…
というのがあるので。出来れば実装も限定して欲しいです。gccでもVCでも何でもいいですけど現存する
コンパイラに。そうしないと、「俺様の実装したC言語ではライブラリにこういう
拡張があって」みたいな話になってしまうので。で、code golfのほうで指摘を受けたのですが、forよりwhileのほうが短くなる例と
いうのは、
#define F ((x+1) & 1)
のような括弧つきのマクロを使うときにfor(;F;) よりは
while Fのほうが短いというのはあるんですけどそれ以外は誰もわからんのですよね。
2006年11月21日 15:08 やねうらお
つづき。やねうらお:
> while(exp1) { st1 st2 exp2; }
> と
> for(;exp1;) { st1 st2 exp2; }
> とは等価なので日下部さん
>> とは等価なので
> st1に「何が入るか」によるでしょ。とのことなので、マクロ絡みの問題ではない、と解釈して良いでしょうか?
st1に日下部さんが言う何かが入るとき、上記のwhileとforが等価ではなくなり、
そのためそのwhileで書かれたコードをforで同じ文字数に収まるように
書き換えることは不可能だ、と言うことで合ってますか?
(つづく)