1
1
mirror of https://github.com/theoludwig/programming-challenges.git synced 2024-12-08 00:45:29 +01:00

46 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# roman-numerals
Created by [@theoludwig](https://github.com/theoludwig) on 30 June 2021.
## Instructions
The objective of this challenge is to create a function that translates a number into Roman numerals or the other way around.
We will use the letters `I`, `V`, `X`, `L`, `C`, `D`, `M` to build the Roman numerals.
Here are the rules for building a Roman numeral:
- The numbers `1`, `2` and `3` are written respectively as `I`, `II` and `III`
- The number `5` is written as `V`
- The number `10` is written as `X`
- The number `50` is written as `L`
- The number `100` is written as `C`
- The number `500` is written as `D`
- The number `1000` is written as `M`
- When writing two letters in a row, if the numerical value of the first is greater than the numerical value of the second, their numerical values are added. For example the number `6` is written `VI`. We add `V` (5) + `I` (1) = 6.
- When writing two letters in a row, if the numerical value of the first is less than the numerical value of the second, the value of the first is subtracted from the second. For example the number `4` is written `IV`. We subtract `V` (5) - `I` (1) = 4.
- Subtractions of values are limited to 2 letters only. For example we **cannot** write `8` while doing `IIX`. We must use the addition of letters like this `VIII`.
- Therefore, the first ten numbers are written as `I`, `II`, `III`, `IV`, `V`, `VI`, `VII`, `VIII`, `IX`, `X` . Larger numbers follow the same pattern.
- You can associate as many symbols as you want to write larger numbers, for example:
- `36` is written as `XXXVI`
- `42` is written as `XLII`
- `2448` is written as `MMCDXLVIII`.
| Symbol | I | V | X | L | C | D | M |
| ------ | --- | --- | --- | --- | --- | --- | ---- |
| Value | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
### Input
- **Line 1:** The string : `arabic to roman` or `roman to arabic` to determine how to convert the number
- **Line 2:** The number to convert
## Sources
- [Wikipedia - Roman numerals](https://en.wikipedia.org/wiki/Roman_numerals)
- [Wikipedia - Arabic numerals](https://en.wikipedia.org/wiki/Arabic_numerals)
## Examples
See the `test` folder for examples of input/output.