Skip to content

Instantly share code, notes, and snippets.

@ealmansi
Created December 29, 2014 22:10
Show Gist options
  • Save ealmansi/bf06b461a29bde9f3d45 to your computer and use it in GitHub Desktop.
Save ealmansi/bf06b461a29bde9f3d45 to your computer and use it in GitHub Desktop.
numerales romanos a decimal (en crystal)
class String
def from_roman
ans = -1
if self.length == 0
ans = 0
elsif self[0..0] == "M"
ans = 1000 + self[1..self.length].from_roman
elsif self[0..1] == "CM"
ans = 900 + self[2..self.length].from_roman
elsif self[0..0] == "D"
ans = 500 + self[1..self.length].from_roman
elsif self[0..1] == "CD"
ans = 400 + self[2..self.length].from_roman
elsif self[0..0] == "C"
ans = 100 + self[1..self.length].from_roman
elsif self[0..1] == "XC"
ans = 90 + self[2..self.length].from_roman
elsif self[0..0] == "L"
ans = 50 + self[1..self.length].from_roman
elsif self[0..1] == "XL"
ans = 40 + self[2..self.length].from_roman
elsif self[0..0] == "X"
ans = 10 + self[1..self.length].from_roman
elsif self[0..1] == "IX"
ans = 9 + self[2..self.length].from_roman
elsif self[0..0] == "V"
ans = 5 + self[1..self.length].from_roman
elsif self[0..1] == "IV"
ans = 4 + self[2..self.length].from_roman
elsif self[0..0] == "I"
ans = 1 + self[1..self.length].from_roman
end
ans
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment