Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- V = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
- def getValue(S,i):
- c = S[i]
- for j in range(i+1,len(S)):
- if S[j] != S[i]:
- if V[S[i]] > V[S[j]]:
- return V[S[i]]
- else:
- return -V[S[i]]
- return V[S[i]]
- def decode(S):
- result = 0
- for i in range(0,len(S)):
- result += getValue(S,i)
- return result
- def encode(x):
- available = sorted([1,5,10,50,100,500,1000,4,9,40,90,400,900])
- count = 0
- while(x != 0):
- for y in available[::-1]:
- if y <= x:
- x -= y
- if y == 4: available.remove(9)
- if y == 9: available.remove(4)
- if y == 40: available.remove(90)
- if y == 90: available.remove(40)
- if y == 400: available.remove(900)
- if y == 900: available.remove(400)
- if y in [1,5,10,50,100,500,1000]:
- count += 1
- else:
- count += 2
- break
- return count
- answer = 0
- for line in open("p089_roman.txt"):
- answer += len(line.strip()) - encode(decode(line.strip()))
- print answer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement