86 lines
1.4 KiB
V
86 lines
1.4 KiB
V
import readline
|
|
|
|
fn main() {
|
|
mut r := readline.Readline{}
|
|
answer := r.read_line('What is your number: ')!
|
|
|
|
symbols := {
|
|
1: 'I'
|
|
5: 'V'
|
|
10: 'X'
|
|
50: 'L'
|
|
100: 'C'
|
|
500: 'D'
|
|
1000: 'M'
|
|
}
|
|
|
|
a := answer.int()
|
|
if a == 0 {
|
|
panic('The value cannot be 0 or a string')
|
|
}
|
|
|
|
mut num := a
|
|
mut result := ''
|
|
|
|
// Handle thousands
|
|
mut m := num / 1000
|
|
for i := 0; i < m; i++ {
|
|
result += symbols[1000]
|
|
}
|
|
num = num % 1000
|
|
|
|
// Handle hundreds
|
|
mut c := num / 100
|
|
if c == 9 {
|
|
result += symbols[100] + symbols[1000]
|
|
} else if c >= 5 {
|
|
result += symbols[500]
|
|
for i := 0; i < c - 5; i++ {
|
|
result += symbols[100]
|
|
}
|
|
} else if c == 4 {
|
|
result += symbols[100] + symbols[500]
|
|
} else {
|
|
for i := 0; i < c; i++ {
|
|
result += symbols[100]
|
|
}
|
|
}
|
|
num = num % 100
|
|
|
|
// Handle tens
|
|
mut x := num / 10
|
|
if x == 9 {
|
|
result += symbols[10] + symbols[100]
|
|
} else if x >= 5 {
|
|
result += symbols[50]
|
|
for i := 0; i < x - 5; i++ {
|
|
result += symbols[10]
|
|
}
|
|
} else if x == 4 {
|
|
result += symbols[10] + symbols[50]
|
|
} else {
|
|
for i := 0; i < x; i++ {
|
|
result += symbols[10]
|
|
}
|
|
}
|
|
num = num % 10
|
|
|
|
// Handle ones
|
|
if num == 9 {
|
|
result += symbols[1] + symbols[10]
|
|
} else if num >= 5 {
|
|
result += symbols[5]
|
|
for i := 0; i < num - 5; i++ {
|
|
result += symbols[1]
|
|
}
|
|
} else if num == 4 {
|
|
result += symbols[1] + symbols[5]
|
|
} else {
|
|
for i := 0; i < num; i++ {
|
|
result += symbols[1]
|
|
}
|
|
}
|
|
|
|
println('${a} --> ${result}')
|
|
}
|