私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「ワイルドキーボード」(CodeIQ)を参照してください。
「バイッ!ナッッリ!」
(01の2進数だけで構成された文字列を、ASCII文字列のバイナリ表記とみなして、元のテキストに戻して欲しい。)
【入出力サンプル】
例1)
STDIN
011000010110001000001010
STDOUT
ab
例2)
STDIN
01100001000010100110001000001010
STDOUT
a
b
Rubyで解答しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/ruby def solve(line) ret = "" for i in 0 ...(line.size/ 8 ) ret += line[i* 8 , 8 ].to_i( 2 ).chr end return ret end # main while line = gets line.strip! if line.empty? then next end printf( "%s" , solve(line)) end |
特に解説が必要な感じではありません。
Rubyで書きましたがC言語で書いた方がちょっとカッコイイプログラムになる気がします。
solve()でASCII文字列に変換されたものが返るのでそれを印字します。
入力値を8文字ずつ読んで2進数の文字列表現を整数に直し、さらに整数値を文字列に変換して連結するだけです。
正解したらおまけがあってそれを実行して見たらこのコードでユニコードのマルチバイト文字をちゃんと表示できていて驚きました。