File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change
1
+
2
+ def RomanToArab (romanNumber ):
3
+ l = []
4
+ d = {
5
+ 'I' : 1 ,
6
+ 'V' : 5 ,
7
+ 'X' : 10 ,
8
+ 'L' : 50 ,
9
+ 'C' : 100 ,
10
+ 'D' : 500 ,
11
+ 'M' : 1000
12
+ }
13
+ for i in range (len (romanNumber )):
14
+ l .append (d .get (romanNumber [i ]))
15
+
16
+ def compute (start , end ):
17
+ if start >= end :
18
+ return 0
19
+ maximum = 0
20
+ index = - 1
21
+ repeat = True
22
+ for i in range (start , end ):
23
+ if i > start and repeat :
24
+ if l [i ] != l [start ]:
25
+ repeat = False
26
+ if l [i ] > maximum :
27
+ maximum = l [i ]
28
+ index = i
29
+ if repeat :
30
+ return (end - start ) * l [start ]
31
+ else :
32
+ return maximum - compute (start , index ) + compute (index + 1 , end )
33
+
34
+ return compute (0 , len (l ))
35
+
36
+
37
+ assert RomanToArab ('I' ) == 1
38
+ assert RomanToArab ('III' ) == 3
39
+ assert RomanToArab ('VII' ) == 7
40
+ assert RomanToArab ('XCVIII' ) == 98
41
+ assert RomanToArab ('MDCCCLXXXVIII' ) == 1888
42
+ assert RomanToArab ('MDCCCXCIX' ) == 1899
43
+ assert RomanToArab ('MMMCMXCIX' ) == 3999
You can’t perform that action at this time.
0 commit comments