Task

Create a function taking a positive integer as its parameter and returning a string containing the Roman numeral representation of that integer. Modern Roman numerals are written by expressing each digit separately, starting with the left most digit and skipping any digit with a value of zero.



In Roman numerals:

 1990 is rendered: 1000=M, 900=CM, 90=XC; resulting in MCMXC
 2008 is written as 2000=MM, 8=VIII; or MMVIII
 1666 uses each Roman symbol in descending order: MDCLXVI


var romans = [
    [1000, "M"],
    [900, "CM"],
    [500,  "D"],
    [400, "CD"],
    [100,  "C"],
    [90,  "XC"],
    [50,   "L"],
    [40,  "XL"],
    [10,   "X"],
    [9,   "IX"],
    [5,    "V"],
    [4,   "IV"],
    [1,    "I"]
]
 
var encode = Fn.new { |n|
    if (n > 5000 || n < 1) return null
    var res = ""
    for (r in romans) {
        while (n >= r[0]) {
            n = n - r[0]
            res = res + r[1]
        }
    }
    return res
}
 
System.print(encode.call(1990))
System.print(encode.call(1666))
System.print(encode.call(2008))
System.print(encode.call(2020))