Sha256: 2e48000833c71ce716f3fa5d3b792de0b80928684de643d7afa7fe7876298ef3

Contents?: true

Size: 566 Bytes

Versions: 22

Compression:

Stored size: 566 Bytes

Contents

-module(roman_numerals).

-export([numerals/1]).

-define(DIGITS, [{"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}]).

-spec numerals(non_neg_integer()) -> string().
numerals(Number) ->
    to_roman(Number, "", ?DIGITS).

to_roman(0, Roman, _) -> Roman;
to_roman(N, Roman, Digits) ->
    {R, D} = hd(Digits),
    if
        N >= D -> to_roman(N - D, Roman ++ R, Digits);
        true   -> to_roman(N, Roman, tl(Digits))
    end.

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
trackler-2.0.6.28 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.27 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.26 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.25 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.24 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.23 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.22 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.21 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.20 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.19 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.18 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.17 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.16 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.15 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.14 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.13 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.12 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.11 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.10 tracks/erlang/exercises/roman-numerals/example.erl
trackler-2.0.6.9 tracks/erlang/exercises/roman-numerals/example.erl