ビットカウント
anarchy golf - numof 1 bits in 0 to 255 の回答公開なので鑑賞する。
C
hinoeさん
http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/hinoe/1240831716&c
hinoe さんは main 再帰の使い方が上手いと思う。
この方法は D Compile Time に応用すると良さそう。
leonidさん
http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/leonid/1240804696&c
__popcountsi2 なんてどこから見つけてきたのだろう。
私
http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/51b/1240764315&c
nとn-1のビットカウントの差をビット演算とlog2で計算。こったことをしているわりに負けてる。
PostScript
私
http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/yshl/1240671654&ps
普通に 2 で割って 1 とビット AND して足した。しかしそれでは勝てないのである。
ySasさん
http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/ySas+%28no+bin%29/1240921455&ps
aload を使って配列を倍々で増やしつつビットが立っている分に 1 を足していて、なるほどと思ったら、
http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/ySas+%28no+bin%29/1240958120&ps
2 進数で文字列化して 10 進数化して 9 で剰余。やられた。
Lazy K
私
http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/51b/1240743932&lazy
読めない。のでソースを貼る。
(load "./lazier.scm") (load "./print-as-golf.scm") (load "./prelude.scm") (load "./prelude-numbers.scm") (lazy-def 'a48 '(s(s i(s s(s s 0)))(s s(s s i)(s s 0)) o)) (lazy-def '(mod2 n) '(n cdr 0)) (lazy-def '(div2 n) '(n (lambda(a b c)(a c (1+ b))) k 0 0)) (lazy-def '(countbit self n) '(ifnonzero n (+ (mod2 n) (self (div2 n))) 0)) (lazy-def '(eachnum self n) '(if< n 256 (cons (+ a48 (Y countbit n)) (self (1+ n))) i)) (print-as-golf (laze '(lambda(in)(Y eachnum 0))))