Roman Numerals
Level: BeginnerConcepts: Algorithms Numbers
Create a Roman numeral converter that can convert between Roman numerals and Arabic numbers.
Requirements
- Convert Arabic numbers to Roman numerals (1 to 3999)
- Convert Roman numerals to Arabic numbers
- Handle invalid Roman numerals appropriately
- Follow standard Roman numeral rules:
              - I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000
- Letters can be repeated up to 3 times (e.g., III = 3)
- When a smaller value precedes a larger value, subtract the smaller (e.g., IV = 4)
- Only I, X, and C can be used as subtractive numerals
 
Test Cases
| Arabic Number | Roman Numeral | Notes | 
|---|---|---|
| 1 | I | Basic conversion | 
| 4 | IV | Subtractive notation | 
| 9 | IX | Subtractive notation | 
| 40 | XL | Subtractive notation | 
| 90 | XC | Subtractive notation | 
| 400 | CD | Subtractive notation | 
| 900 | CM | Subtractive notation | 
| 1984 | MCMLXXXIV | Complex number | 
| 3999 | MMMCMXCIX | Maximum valid number | 
Invalid Cases to Handle
- Numbers less than 1 or greater than 3999
- Invalid Roman numeral characters
- Invalid Roman numeral sequences (e.g., "IIII", "VV")
- Invalid subtractive combinations (e.g., "IL", "IC")
Tips
- Start with the simplest conversions first (1-10)
- Add support for subtractive notation gradually
- Consider edge cases and invalid inputs
- Think about how to validate Roman numerals
- Consider using a state machine for validation