mirror of https://github.com/01-edu/public.git
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.
55 lines
1.9 KiB
55 lines
1.9 KiB
5 years ago
|
## romannumbers
|
||
|
|
||
|
### Instructions
|
||
|
|
||
5 years ago
|
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.
|
||
5 years ago
|
|
||
5 years ago
|
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 digit`.
|
||
5 years ago
|
|
||
|
Roman Numerals reminder:
|
||
5 years ago
|
|
||
5 years ago
|
| I | 1 |
|
||
|
| :-: | :--: |
|
||
|
| V | 5 |
|
||
|
| X | 10 |
|
||
|
| L | 50 |
|
||
|
| C | 100 |
|
||
|
| D | 500 |
|
||
|
| M | 1000 |
|
||
5 years ago
|
|
||
5 years ago
|
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.
|
||
|
|
||
5 years ago
|
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 |
|
||
5 years ago
|
|
||
|
## 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
|
||
5 years ago
|
ERROR: can not convert to roman digit
|
||
5 years ago
|
student@ubuntu:~/[[ROOT]]/test$
|
||
|
```
|