CodeIQ:【コードミステリ】数字に隠されたメッセージ

私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「【コードミステリ】数字に隠されたメッセージ」(CodeIQ)を参照してください。

問題の概要

問題を引用します。
問題
ミステリ小説『顔貌売人 ハッカー探偵 鹿敷堂桂馬』にちなんだ、簡単なプログラムを書いてみよう!
数字に隠されたメッセージを、見事読み取ることができるかな?

各行から得られる正の整数(1~9999)を16で割ります。
得られた数字に応じて、以下の表を元に文字を得て、全て連結して出力して下さい。

対応表
得られた数字出力する文字
00
11
22
33
44
55
66
77
88
99
10a
11b
12c
13d
14e
15f

入力例1
10
12
14
17

出力例1
ace1

入力例2
6562
5963
1450
2077

出力例2
2bad

私のプログラム

Rubyで解答しています。

#!/usr/bin/ruby

# main
ret = ""
while line = gets
	line.strip!
	next if line.empty?

	ret += (line.to_i % 16).to_s(16)
end

puts ret

解説

非常に簡単です。

main

入力値を数値にして16で割った余りを文字列にして繋げれば答えになります。

雑感

回答後に解法が書かれていて、一つは私の実装と同じでした。
もう一つは入力値を16進数にしてその末尾をとるという方法でした。確かに0進数から16進数への変換は16で割った余りを使うのでこれでもできます。この発想はなかったなぁ。