You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.6 KiB

## romannumbers
### Instructions
Write a program called `rn`. The objective is to convert a number, given as an argument, into a roman number and print it with its roman number calculation.
The program should have a limit of `4000`. In case of an invalid number, for example `"hello"` or `0` the program should print `ERROR: can not convert to roman number`.
Roman Numerals reminder:
I -> 1
V -> 5
X -> 10
L -> 50
C -> 100
D -> 500
M -> 1000
For example, the number 1732 would be denoted MDCCXXXII in Roman numerals. However, Roman numerals are not a purely additive number system. In particular, instead of using four symbols to represent a 4, 40, 9, 90, etc. (i.e., IIII, XXXX, VIIII, LXXXX, etc.), such numbers are instead denoted by preceding the symbol for 5, 50, 10, 100, etc., with a symbol indicating subtraction. For example, 4 is denoted IV, 9 as IX, 40 as XL, etc.
The following table gives the Roman numerals for the first few positive integers.
1 I 11 XI 21 XXI
2 II 12 XII 22 XXII
3 III 13 XIII 23 XXIII
4 IV 14 XIV 24 XXIV
5 V 15 XV 25 XXV
6 VI 16 XVI 26 XXVI
7 VII 17 XVII 27 XXVII
8 VIII 18 XVIII 28 XXVIII
9 IX 19 XIX 29 XXIX
10 X 20 XX 30 XXX
## Usage
```console
student@ubuntu:~/[[ROOT]]/test$ go build
student@ubuntu:~/[[ROOT]]/test$ ./rn hello
ERROR: can not convert to roman digit
student@ubuntu:~/[[ROOT]]/test$ ./rn 123
C+X+X+I+I+I
CXXIII
student@ubuntu:~/[[ROOT]]/test$ ./rn 999
(M-C)+(C-X)+(X-I)
CMXCIX
student@ubuntu:~/[[ROOT]]/test$ ./rn 3999
M+M+M+(M-C)+(C-X)+(X-I)
MMMCMXCIX
student@ubuntu:~/[[ROOT]]/test$ ./rn 4000
ERROR: can not convert to roman number
student@ubuntu:~/[[ROOT]]/test$
```