他の方が golf
http://qiita.com/cielavenir/items/732a3140efe3db571480
していると、golf したくなりますね。
puts $<.map{|e|a,b=e.split(?/).map{|e|e.to_i(16).to_s(2).to_i};(a*2+b).to_s.gsub(/21|12/){|m|m[1,0]=?0;m}.split(/0+/).map{|c|x=c.to_i;"**JTRUZLSN"[x/7%10+x%4]}*''}
163バイト。シンタックスハイライトが乱れてるね。
[追記開始]
…Kobito 上では乱れてるけど、Qiita 上では乱れてない。そういうもん?
[追記終了]
改行と空白を適当に入れるとこんな感じ。
puts $<.map{|e|
a,b=e.split(?/).map{|e|
e.to_i(16).to_s(2).to_i
};
(a*2+b).to_s
.gsub(/21|12/){|m|m[1,0]=?0;m}
.split(/0+/)
.map{|c|x=c.to_i;"**JTRUZLSN"[x/7%10+x%4]} * ''
}
ciel さんと同じく、私のアイディアを元に。
[追記開始]
ciel さんの実装を大いに参考にさせていただきました。puts $<.map
で始まり、 *''}
で終わっているところなんかはそのまま利用させていただきました。
[追記終了]
zip をやめて、
もともと16進数→16進数と思って整数に→2進数と思って文字列に→10進数と思って整数に→上段の2倍と下段を加算→10進数と思って文字列に
という処理にした。
あと、「"313"ならN」 のような情報を短い文字数で実現するために怪しい計算を導入した。
プロゴルファーならもうすこし行けるんじゃないかと思うけど、私はこんなところで。