宿題手伝います
■ このスレッドは過去ログ倉庫に格納されています
0455デフォルトの名無しさん
NGNGできたよー
TABLE = {
1 => 'I',
5 => 'V',
10 => 'X',
50 => 'L',
100 => 'C',
500 => 'D',
1000 => 'M',
5000 => '',
10000 => ''
}
def convert_one(value)
value = value.to_i
case value
when 4
'15'
when 5
'5'
when 9
'10'
else
if value < 4
'1' * value
elsif value < 9
'5' + '1' * (value - 5)
else
raise
end # if
end # case
end # def
def int_to_roman(value)
digit = 1
result = []
value.to_s.scan(/./).reverse.each do |d|
result.push(convert_one(d).tr('150', "#{TABLE[digit]}#{TABLE[digit * 5]}#{TABLE[digit * 10]}"))
digit *= 10
end
result.reverse.join
end # def
while line = gets
value = line.to_i
if value < 1000 || 4000 < value
puts "1000〜4000の数字を入力しろや、な。"
else
puts int_to_roman(value)
end # if
end
Rubyだけどな(w
参考にはなるんじゃないかな。
■ このスレッドは過去ログ倉庫に格納されています