Short Coding
ガツガツ読んでました。後半の方は執筆時から見せていただいていて、今だいたい現物で前半は読んだので、ざっとは一通り読んだんじゃないかと。
前半の方を読んでいていいなーと思ったのは、説明に使う問題の順番がすごい適切だなということ。ゴルフの解答ってたいてい色んなテクニックがいりくんで出てくるので、単体で説明していくにはすごく注意深く問題を選ばなきゃならなくて難しいと思うんだけど、ちゃんと一つずつ簡単なとこから説明できてる感じで、さすがあれだけ問題数こなしておられる id:Ozy さんだなぁと。
あと面白いのはこう Short Coding がさも当然のやるべきことであるかのように書いてあるというか、こうなんか突然「ロベールさんによれば」みたいな文章が始まるノリは面白い。良いことなのかは知りませんが。
それと数学的な規則を探るための変形が、定理の証明とかは書かずに、定理の存在を推測するところを念入りに書いてるのは、かなり面白く思えた。そのへんも含めて ICPC 的な問題解くのが好きだけど英語読むのめどいなーって子とかは単に ICPC の答えつき問題集としても使えそうな。そんな子が Short Coding とかいうタイトルの本を買うとは思えんけど。
あと中盤後半は今までの知識の集大成って感じですね。よく POJ だけでこんだけ分量あったなーっていう。3進数とか3Byte整数とか見て感動したんだけど、すっかり忘れてた。最近ゴルフでアルゴリズムがすごい例はどんなんがあるかとか聞かれたんだけど、このへんはゴルフで使われる変わったアルゴリズムの例としてはわかりやすくて良いかも。
あと1章開幕と5章の暑くるしいまでの熱っぽい書きかたと2-4章の淡々とゴルフする感覚の温度差がなんかすごいなと。それこそ修行僧みたいな。
とりあえず買うといいよ。
MacOSX で linux バイナリでも動かしてみる
http://homepage3.nifty.com/mogami/diary/d0708.html#071
このへんとか見てて、そういえばこの MacOSX は x86 だった…! と思い出しました。一度思い出してみると、 linux の dmd が動かんのがとても奇妙に思えてきたのですが、でまぁそのへんの違いを再度吸収してる LL というのはえらいなぁと思って少し LL を作ってみました。
http://shinh.skr.jp/binary/ll.tgz
なんか以下みたいな感じ。
i@um ~/wrk/ll> uname -a Darwin um.local 8.10.1 Darwin Kernel Version 8.10.1: Wed May 23 16:33:00 PDT 2007; root:xnu-792.22.5~1/RELEASE_I386 i386 i386 i@um ~/wrk/ll> ./hello zsh: exec format error: ./hello i@um ~/wrk/ll> ./objdump -f hello hello: file format elf32-i386 architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x080482b0 i@um ~/wrk/ll> ./ll.rb hello loading programs num=2 load: 00000000 08048000-0804845c 0000045c 0000045c r-x load: 0000045c 0804945c-08049564 00000104 00000108 rw- relocating addresses num=4 failed to load: __gmon_start__ reloc: puts(0x9001caa0) 0x8049548 reloc: __libc_start_main(0x1843) 0x804954c failed to load: __gmon_start__ executing _start(0x80482b0) OK, invoking main(0x8048354). good luck hello world
当初の目的だった dmd はうまく動いてないんだけど、 Brainf*ck インタプリタは動いていて、 Brainf*ck はチューリング完全らしいので、まぁ実用上問題は無いんじゃないかと思う。カレンダー表示できたし。ウソ、 dmd 動くくらいまではなんとかしたいけど、 libc がマクロに満ちあふれてるからもっとうまい方針考えた方がいいかなぁとかも。
ちなみに、 LL は linux loader の略です。