Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.21 KB | None | 0 0
  1. V = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
  2.  
  3. def getValue(S,i):
  4.     c = S[i]
  5.     for j in range(i+1,len(S)):
  6.         if S[j] != S[i]:
  7.             if V[S[i]] > V[S[j]]:
  8.                 return V[S[i]]
  9.             else:
  10.                 return -V[S[i]]
  11.     return V[S[i]]  
  12.  
  13. def decode(S):
  14.     result = 0
  15.     for i in range(0,len(S)):
  16.         result += getValue(S,i)
  17.     return result
  18.  
  19. def encode(x):
  20.     available = sorted([1,5,10,50,100,500,1000,4,9,40,90,400,900])
  21.     count = 0
  22.     while(x != 0):
  23.         for y in available[::-1]:
  24.             if y <= x:
  25.                 x -= y
  26.                 if y == 4: available.remove(9)
  27.                 if y == 9: available.remove(4)
  28.                 if y == 40: available.remove(90)
  29.                 if y == 90: available.remove(40)
  30.                 if y == 400: available.remove(900)
  31.                 if y == 900: available.remove(400)
  32.                 if y in [1,5,10,50,100,500,1000]:
  33.                     count += 1
  34.                 else:
  35.                     count += 2
  36.                 break
  37.     return count
  38.  
  39.  
  40. answer = 0
  41. for line in open("p089_roman.txt"):
  42.     answer += len(line.strip()) -  encode(decode(line.strip()))
  43. print answer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement