ナベアツ問題の改良
BCDカウンタをif文無しで実現するようにしました。
#!/bin/env ruby j = 0 (1..1000).each do |i| a = j | 0x666666666 a &= (a >> 1) a &= (a >> 2) a &= 0x11111111 a |= (a << 1) a |= (a << 2) a = ~a a |= (a << 4) a |= (a << 8) a |= (a << 16) a = ~a j += (a & 0x66666666) j += 1 k = j k ^= 0xcccccccc k &= (k >> 1) k &= (k >> 2) k |= (k >> 16) k |= (k >> 8) k |= (k >> 4) k &= 1 print i if k == 1 or i % 3 == 0 then print " aho" end if i % 5 == 0 then print " wan" end print "\n" end
このプログラムを書いていて、Rubyにハーフキャリーが欲しいなと思いました。