forked from n00blet/CheckIO-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
romanNumerals.py
35 lines (31 loc) · 1023 Bytes
/
romanNumerals.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
one=['','I','II','III','IV','V','VI','VII','VIII','IX']
ten=['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC']
hun=['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM']
tou=['','M','MM','MMM']
def checkio(data):
roman=''
if 1<=data<10:
return one[data]
elif data<100:
roman=ten[int(data/10)]
if data%10:
roman+=checkio(data%10)
return roman
elif data<1000:
roman=hun[int(data/100)]
if data%100:
roman+=checkio(data%100)
return roman
elif data<4000:
roman=tou[int(data/1000)]
if data%1000:
roman+=checkio(data%1000)
return roman
else:
return 'invalid'
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio(6) == 'VI', '6'
assert checkio(76) == 'LXXVI', '76'
assert checkio(499) == 'CDXCIX', '499'
assert checkio(3888) == 'MMMDCCCLXXXVIII', '3888'