Puzzle: Roman Numerals Decoder [algorithms]

Roman Numerals Decoder” is a coding puzzle that people can be attempted in the following languages: javascript, coffeescript, ruby, python, haskell, csharp, php, typescript, swift, cpp, r, nim, go, elixir, lua, scala, and clojure.

  • Difficulty: 6 kyu
  • Stars: 860
  • Votes: 2012
  • Category: algorithms
  • Tags: Algorithms, Parsing, Logic, Strings
  • Source: codewars

Description

Create a function that takes a Roman numeral as its argument and returns its value as a numeric decimal integer. You don’t need to validate the form of the Roman numeral.

Modern Roman numerals are written by expressing each decimal digit of the number to be encoded separately, starting with the leftmost digit and skipping any 0s. So 1990 is rendered “MCMXC” (1000 = M, 900 = CM, 90 = XC) and 2008 is rendered “MMVIII” (2000 = MM, 8 = VIII). The Roman numeral for 1666, “MDCLXVI”, uses each letter in descending order.

Example:

javascript
solution('XXI'); // should return 21

cpp
solution("XXI"); // => 21

php
solution('XXI'); // should return 21

coffeescript
solution('XXI') # should return 21

ruby
solution('XXI') # should return 21

python
solution('XXI') # should return 21

haskell
solution "XXI" -- should return 21

csharp
RomanDecode.Solution("XXI") -- should return 21

typescript
solution('XXI'); // should return 21

swift
solution("XXI") // should return 21

Elixir
Solution.decode("XXI") # should return 21

r
solution("XXI") # should return 21

lua
romanDecoder("XXI") -- should return 21

scala
Roman.decode("XXI") // should return 21

clojure
(translate-roman-numerals "XXI") ;; should return 21

Help:


Symbol	Value
I	      1
V	      5
X	      10
L	      50
C	      100
D	      500
M	      1,000

Courtesy of rosettacode.org

Solve It Here

Click the link below to solve it on Codewars:

Notes

This puzzle was posted by a Slackbot via a slash command. If you want to help work on the app, send a message to @Josh.

If you don’t want to see the coding puzzles when you visit the forum, you can go into your settings and mute the puzzles category.