37 lines
602 B
Go
37 lines
602 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
var m = map[rune]int{
|
|
'I': 1,
|
|
'V': 5,
|
|
'X': 10,
|
|
'L': 50,
|
|
'C': 100,
|
|
'D': 500,
|
|
'M': 1000,
|
|
}
|
|
|
|
// function, per task description
|
|
func from_roman(roman string) (arabic int) {
|
|
last_digit := 1000
|
|
for _, r := range roman {
|
|
digit := m[r]
|
|
if last_digit < digit {
|
|
arabic -= 2 * last_digit
|
|
}
|
|
last_digit = digit
|
|
arabic += digit
|
|
}
|
|
|
|
return arabic
|
|
}
|
|
|
|
func main() {
|
|
// parse three numbers mentioned in task description
|
|
for _, roman_digit := range []string{"MCMXC", "MMVIII", "MDCLXVI"} {
|
|
fmt.Printf("%-10s == %d\n", roman_digit, from_roman(roman_digit))
|
|
}
|
|
}
|