RosettaCodeData/Task/Roman-numerals-Decode/Swift/roman-numerals-decode-1.swift
2019-09-12 10:33:56 -07:00

28 lines
658 B
Swift

extension Int {
init(romanNumerals: String) {
let values = [
( "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),
]
self = 0
var raw = romanNumerals
for (digit, value) in values {
while raw.hasPrefix(digit) {
self += value
raw.removeFirst(digit.count)
}
}
}
}