Comment detail
LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)外部コマンドを使って楽するとこんな感じ。ほとんど単なるsh。
標準入力に「10」とか食わせると2進変換、「10 8」のように空白で区切って基数を付けるとその基数で変換。
1 2 | /\(.*\) \+\(.*\)/{s//echo "obase=\2;\1"|bc/e;b}
s/.*/echo "obase=2;&"|bc/e
|
こっちのほうが短いですね。
1 2 3 | s/\(.*\) \+\(.*\)/echo "obase=\2;\1"|bc/e
t
s/.*/echo "obase=2;&"|bc/e
|



emasaka #7272() [ sed ] Rating0/0=0.00
無駄にsedで実装してみます。標準入力。2進のみ。
かなりダサいので誰か短くしてください。
#!/bin/sed -f s/^/@/ :a /@0\?$/{s///;b} /[02468]$/s/.*@/0&/ /[13579]$/s/.*@/1&/ s/@/&#/ :b /#1$/{ s/// ba } /#10/{s//5#/;bb} /#11/{s//5#1/;bb} /#12/{s//6#/;bb} /#13/{s//6#1/;bb} /#14/{s//7#/;bb} /#15/{s//7#1/;bb} /#16/{s//8#/;bb} /#17/{s//8#1/;bb} /#18/{s//9#/;bb} /#19/{s//9#1/;bb} /#[3579]/{ h s/.*#\(.\)*/\1/ y/3579/1234/ G /#.$/{s/\(.\)\n\(.*\)#./\2\1/;ba} s/\(.\)\n\(.*\)#./\2\1#1/ bb } /#[02468]/{ h s/.*#\(.\).*/\1/ y/02468/01234/ G s/\(.\)\n\(.*\)#./\2\1#/ } /#./bb s/#// baRating0/0=0.00-0+
1 reply [ reply ]