In this validating Roman Numerals problem, You are given a string, and you have to validate whether it’s a valid Roman numeral. If it is valid, print True. Otherwise, print False.
Problem solution in Python 2 programming.
import sys import re pattern = '^M{0,3}(D?C{0,3}|C(D|M))(L?X{0,3}|X(L|C))(V?I{0,3}|I(V|X))$' string = sys.stdin.readline().strip() match = re.search(pattern, string) if match and string != '': print 'True' else: print 'False'
Problem solution in Python 3 programming.
thousand = 'M{0,3}' hundred = '(C[MD]|D?C{0,3})' ten = '(X[CL]|L?X{0,3})' digit = '(I[VX]|V?I{0,3})' regex_pattern = r"%s%s%s%s$" % (thousand, hundred, ten, digit) # Do not delete 'r'
Problem solution in pypy programming.
# Enter your code here. Read input from STDIN. Print output to STDOUT import re pattern = '^(?=[MDCLXVI])M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$' roman = str(raw_input()) if re.search(pattern, roman): print 'True' else: print 'False'
Problem solution in pypy3 programming.
# Enter your code here. Read input from STDIN. Print output to STDOUT import re ptrn = r'^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$' s = input().strip() x = re.match(ptrn,s) if x: print(True) else: print(False)