Comments on Single digit Roman numeral
Parent
Single digit Roman numeral
Given a single character, which is a valid Roman numeral, output its value.
Values
There are 7 valid single character Roman numerals, with the following values:
| Character | Value |
|---|---|
| I | 1 |
| V | 5 |
| X | 10 |
| L | 50 |
| C | 100 |
| D | 500 |
| M | 1000 |
Input
- A single character, which will always be one of
IVXLCDM.
Output
- The corresponding value.
- The output value must not be a Roman numeral.
- It is acceptable to have a trailing decimal point
.or.0for some or all of the outputs.
Test cases
As there are only 7 valid inputs, the list of test cases is exhaustive.
Test cases are in the format "input" : output.
"I" : 1
"V" : 5
"X" : 10
"L" : 50
"C" : 100
"D" : 500
"M" : 1000
Scoring
This is a code golf challenge. Your score is the number of bytes in your code.
Explanations are optional, but I'm more likely to upvote answers that have one.
Python 3.8+, 51 byte ```pyt …
3y ago
C, 59 byte ```c h(n){retur …
3y ago
Japt v2.0a0, 22 bytes n …
5mo ago
[Perl], 45 bytes Reads char …
6mo ago
Python 3.8+, 49 byte ```pyt …
6mo ago
[AWK], 80 bytes {split( …
2y ago
[Swift], 114 bytes …
3y ago
Haskell, 62 bytes ``` (\n- …
3y ago
Vyxal, 12 bitsv2, 1.5 or 2 byt …
3y ago
Post
Python 3.8+, 49 byte
lambda c:5**((i:="IVXLCDM".find(c))&1)*10**(i>>1)
Testing:
f=lambda c:5**((i:="IVXLCDM".find(c))&1)*10**(i>>1)
print(*map(f,"IVXLCDM"))
52 bytes
My first attempt. Really simple and straight forward. If the rules would allow 1000.0 as result for M then it could be written as 1e3, making this solution one byte smaller.
lambda n:[1,5,10,50,100,500,1000]["IVXLCDM".find(n)]

2 comment threads