codeiq2nd_whitespace.rb
# !/usr/bin/ruby
# coding:utf-8
def gen_label(n)
raise 'gen_label' if !n.is_a?(Integer) || n<0
n.to_s(2).tr('01'," \t")+"\n"
end
def gen_number(n)
raise 'gen_number' if !n.is_a?(Integer)
(n<0 ? "\t" : ' ')+gen_label(n.abs)
end
STR="CodeIQ 2周年!\n"
STR.each_byte{|e|
c = e
print ' '+gen_number(c)
print "\t\n "
}
# ideoneだと正常終了時に末端に変な出力がある。
# なのでCodeIQの問題では(一部例外を除き)正常終了させてはいけないというローカルルールがある。
# print "\n\n\n"
なお、HaskellのputCharの仕様により、ローカル実行の場合はeach_codepointに変更してプログラムを生成しなおさなければなりません(怒)。