3の倍数を生成する文法

http://twitter.com/natsutan/statuses/787596526

12:12 (nishio) 今理解した
12:12 (nishio) 「num ->」のところを見落としていた


12:13 (nishio) 3の倍数であることは当たり前すぎて面白くない
12:13 (nishio) 任意の3の倍数が表現できるのかって問題なのかな?
12:14 (nishio) Mishoが言っているような「最初の2つは任意の3の倍数」ならあきらかに任意の3の倍数を表現できない。


12:14 (nyaxt) よくわからない
12:14 (nyaxt) numが任意の2進数で
12:14 (nyaxt) num 0がさんのばいすう?
12:15 (nishio) num -> 11 | 110 | num 0 | num numだそうな
12:15 (nishio) 省略されていた「num ->」がないと意味が通らないよね。
12:16 (nishio) numは11または110または…
12:16 (nishio) で、numが3の倍数の時 num 0 と num numが3の倍数なのは簡単に示せるので
12:17 (nishio) 生成される数が全て3の倍数であることはあたりまえ


12:17 (nyaxt) num 0 = num * 2だから?
12:17 (nishio) うん
12:17 (nyaxt) num numは?
12:17 (nyaxt) おなじりくつか
12:17 (nyaxt) 理解した
12:18 (nishio) numの桁数をkとしたときにnum num = num * (2 ** (k + 1) + 1)


12:19 (nishio) 最初の2つの数をうまく取れば任意の3の倍数を表現できるのかどうかがわからない
12:19 (nishio) できないんじゃないかという気がするがw


12:20 (nishio) 1001はどう表現するんだ(ぉ
12:20 (nyaxt) そうね
12:21 (nishio) ということは 11 | 1001 | num 0 | num num が任意の3の倍数を生成できない反例を見つければいいのか
12:21 (anemo) 33(0b100001)は、表現できないですよね
12:21 (nishio) できないね
12:21 (nishio) ===終了===


12:21 (nyaxt) じゃー
12:21 (nyaxt) ルール追加して
12:22 (nyaxt) 1 0*n 1的なものを追加したら?
12:22 (nishio) たぶん11100...0001という3の倍数がそんざいするな
12:22 (nishio) たぶんじゃないやw


12:24 (nishio) 任意の整数nとmについて、nの後にm個以上の0をつけて3で割った余りを2にすることができる
12:25 (nishio) なのでm (0 が m - 1個) 1という形の3の倍数が存在する。
12:25 (nishio) で、これは上のルールを多少変えたくらいでは表現できないw
12:26 (nyaxt) 理解した

そしてIRCでの議論が終わってログをブログに貼ってから一番上に書いた「そもそもの問題」が返信で送られてきているのに気がついた。Twitterはやはり議論には向かないと思った。