The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/ruby
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!";