Challenge - 5 Problems
Roman Numeral Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of Roman to Integer Conversion Function
What is the output of the following code when converting the Roman numeral 'MCMXCIV' to an integer?
DSA Python
def roman_to_int(s): roman_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} total = 0 prev_value = 0 for char in reversed(s): value = roman_map[char] if value < prev_value: total -= value else: total += value prev_value = value return total print(roman_to_int('MCMXCIV'))
Attempts:
2 left
💡 Hint
Remember that when a smaller value appears before a larger value, it should be subtracted.
✗ Incorrect
The Roman numeral 'MCMXCIV' breaks down as M (1000) + CM (900) + XC (90) + IV (4), totaling 1994.
🧠 Conceptual
intermediate1:30remaining
Understanding Subtraction Rule in Roman Numerals
Which of the following Roman numeral pairs correctly demonstrates the subtraction rule used in Roman to Integer conversion?
Attempts:
2 left
💡 Hint
Look for pairs where a smaller numeral comes before a larger numeral.
✗ Incorrect
The subtraction rule applies when a smaller numeral precedes a larger one, such as IV (4) and IX (9). Other options show addition.
🔧 Debug
advanced2:00remaining
Identify the Error in Roman to Integer Code
What error will the following code produce when run with input 'XLII'?
DSA Python
def roman_to_int(s): roman_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} total = 0 prev_value = 0 for char in s: value = roman_map[char] if value > prev_value: total += value - 2 * prev_value else: total += value prev_value = value return total print(roman_to_int('XLII'))
Attempts:
2 left
💡 Hint
Check how subtraction is handled when the current value is greater than the previous.
✗ Incorrect
The code correctly implements the subtraction rule by subtracting twice the previous value when the current value is greater. For 'XLII', it returns 42.
❓ Predict Output
advanced2:00remaining
Output of Incorrect Roman to Integer Implementation
What is the output of this code when converting 'IX' to an integer?
DSA Python
def roman_to_int(s): roman_map = {'I': 1, 'V': 5, 'X': 10} total = 0 for i in range(len(s)): value = roman_map[s[i]] if i + 1 < len(s) and roman_map[s[i+1]] > value: total -= value else: total += value return total print(roman_to_int('IX'))
Attempts:
2 left
💡 Hint
Check how the code subtracts the value when the next numeral is larger.
✗ Incorrect
The code subtracts 1 for 'I' because 'X' is larger, then adds 10 for 'X', resulting in 9.
🚀 Application
expert3:00remaining
Number of Valid Roman Numerals of Length 3
How many valid Roman numerals of length exactly 3 characters exist using the symbols I, V, X, L, C, D, M following standard Roman numeral rules?
Attempts:
2 left
💡 Hint
Consider valid combinations and subtraction rules for 3-character numerals.
✗ Incorrect
Counting all valid 3-character Roman numerals respecting subtraction and repetition rules results in 64 valid numerals.