39 lines
509 B
Go
39 lines
509 B
Go
package q12
|
|
|
|
import "strings"
|
|
|
|
var mapping = []struct {
|
|
string
|
|
int
|
|
}{
|
|
{"I", 1},
|
|
{"IV", 4},
|
|
{"V", 5},
|
|
{"IX", 9},
|
|
{"X", 10},
|
|
{"XL", 40},
|
|
{"L", 50},
|
|
{"XC", 90},
|
|
{"C", 100},
|
|
{"CD", 400},
|
|
{"D", 500},
|
|
{"CM", 900},
|
|
{"M", 1000},
|
|
}
|
|
|
|
func intToRoman(num int) string {
|
|
b := &strings.Builder{}
|
|
|
|
for i := len(mapping) - 1; i >= 0; i-- {
|
|
for num >= mapping[i].int {
|
|
num -= mapping[i].int
|
|
b.WriteString(mapping[i].string)
|
|
}
|
|
if num == 0 {
|
|
break
|
|
}
|
|
}
|
|
return b.String()
|
|
}
|
|
|
|
var _ = intToRoman
|