#!/usr/bin/ruby # Translation of: http://rosettacode.org/wiki/Roman_numerals/Encode#ActionScript func arabic2roman(num, roman='') { static lookup = [ :M:1000, :CM:900, :D:500, :CD:400, :C:100, :XC:90, :L:50, :XL:40, :X:10, :IX:9, :V:5, :IV:4, :I:1 ]; lookup.each { |pair| while (num >= pair.second) { roman += pair.first; num -= pair.second; } } return roman; } assert_eq(arabic2roman(1990), 'MCMXC'); assert_eq(arabic2roman(2008), 'MMVIII'); assert_eq(arabic2roman(1666), 'MDCLXVI'); say "** Test passed!";