Files
3/roman_numeral_encoder.v
Aritra Banik ea62a9518d 001
2025-02-02 02:21:56 +05:30

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}')
}