11 lines
447 B
Plaintext
11 lines
447 B
Plaintext
defmodule Roman_numeral do
|
|
@symbols [ {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'} ]
|
|
def encode(num) do
|
|
{roman,_} = Enum.reduce(@symbols, {[], num}, fn {divisor, letter}, {memo, n} ->
|
|
{memo ++ List.duplicate(letter, div(n, divisor)), rem(n, divisor)}
|
|
end)
|
|
Enum.join(roman)
|
|
end
|
|
end
|