Code Katas - Roman numerals task
- The output will be generated by tallying 1, 5, 10, 50, 100, 500, and 1000, using the symbols “I”, “V”, “X”, “L”, “C”, “D” and “M” respectively.
- The symbols must be written in descending order: “M” before “D” before “C” before “L”, etc.
- Using the tallying logic, it’s clear that we can only have up to four repetitions of “I”, “X”, “C” and “M”. And only one “V”, “L” or “D”. Any more than that and the multiple tally marks are abbreviated to the next “higher” tally mark.
- Finally, we have the six (optional) substitution rules: “IIII”=>“IV”, “VIIII”=>“IX”, “XXXX”=>“XL”, “LXXXX”=>“XC”, “CCCC”=>“CD”, “DCCCC”=>“CM”. These are exceptions to the descending order rule.
- The Arabic number 0 is mapped to the empty string.
- If the input is < 0 or > 4000 return None otherwise return Some(roman), where roman is the Arabic number converted to Roman numerals as described above.