ビットカウント

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))))