-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroman-numerals.py
71 lines (61 loc) · 1.89 KB
/
roman-numerals.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
'''
Numeral Value
I 1 (unus)
V 5 (quinque)
X 10 (decem)
L 50 (quinquaginta)
C 100 (centum)
D 500 (quingenti)
M 1,000 (mille)
'''
# This is failed written by me.
# retrying
def checkio(data):
finlist = []
#justlist:
finlist.append(int(data/1000)*'M'+'M')
finlist.append(int(data%1000/500)*'D'+'D')
finlist.append(int(data%500/100)*'C'+'C')
finlist.append(int(data%100/50)*'L'+'L')
finlist.append(int(data%50/10)*'X'+'X')
finlist.append(int(data%10/5)*'V'+'V')
finlist.append(int(data%5)*'I'+'I')
while '' in finlist:
finlist.remove('')
print(finlist)
flag = True
while flag:
print('runing')
flag = False
for i in [6, 4, 2]:
if len(finlist[i]) == 5 and finlist[i][2] == finlist[i][-1]:
finlist[i] = finlist[i][-1]
finlist[i-1] = finlist[i-1][:-1] + finlist[i][-1] + finlist[i-1][-1] *2
flag = True
print(finlist)
for i in [5, 3, 1]:
if len(finlist[i]) == 4:
finlist[i] = finlist[i][-1]
if len(finlist[i-1]) == 1:
finlist[i-1] = finlist[i+1][-1] + finlist[i-1]*2
else:
finlist[i-1] = finlist[i-1][:-1] + finlist[i+1][-1] + finlist[i-1][-1] *2
flag = True
print(finlist)
for i in range(0,7):
finlist[i] = finlist[i][:-1]
finlist = ''.join(finlist)
print(finlist)
return finlist
checkio(3888)
checkio(499)
checkio(76)
checkio(6)
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio(6) == 'VI', '6'
assert checkio(76) == 'LXXVI', '76'
assert checkio(499) == 'CDXCIX', '499'
assert checkio(3888) == 'MMMDCCCLXXXVIII', '3888'
assert checkio(3999) == 'MMMCMXCIX', '3999'
assert checkio(579) == 'DLXXIX', '579'