1.7 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: cannot convert to roman digit
.
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 | XIX | 19 | XIX | 29 | XXIX |
10 | X | 20 | XX | 30 | XXX |
Usage
$ go run . hello
ERROR: cannot convert to roman digit
$ go run . 123
C+X+X+I+I+I
CXXIII
$ go run . 999
(M-C)+(C-X)+(X-I)
CMXCIX
$ go run . 3999
M+M+M+(M-C)+(C-X)+(X-I)
MMMCMXCIX
$ go run . 4000
ERROR: cannot convert to roman digit
$