Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/env ruby
- def old_roman (integer)
- enc = []
- [[1000, "M"], [500, "D"], [100, "C"],
- [50, "L"], [10, "X"], [5, "V"], [1, "I"]].each do |num, str|
- enc.push(str * (integer / num))
- integer = integer % num
- end
- enc.join
- end
- def new_roman (integer)
- if integer == 0 then
- return ""
- end
- enc = []
- enc.push("M" * (integer / 1000))
- integer = integer % 1000
- [[500, "D", 100, "C"], [50, "L", 10, "X"], [5, "V", 1, "I"]].each do |fnum, fstr, onum, ostr|
- if integer >= onum then
- puts integer
- special_case = (integer / onum)
- # to check for special case, you can also do
- # if [4, 9].include? special_case then
- if special_case % 5 == 4 then
- enc.push(ostr, new_roman(integer + onum))
- integer = 0
- else
- enc.push(fstr * (integer / fnum))
- integer = integer % fnum
- enc.push(ostr * (integer / onum))
- integer = integer % onum
- end
- end
- end
- enc.join
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement