Advertisement
danchaofan

Euler #81

Dec 23rd, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | None | 0 0
  1. raw = list(open('/p081_matrix.txt'))
  2. visited, shortTrack, lengths, shortSaved = [], [4445] + [10**10]*(80**2-1), [], [4445] + [10**10]*(80**2-1)
  3. for a in raw:
  4.     a.rstrip('\n')
  5.     tempString = ""
  6.     for b in a:
  7.         if b == ",":
  8.             lengths.append(int(tempString))
  9.             tempString = ""
  10.             continue
  11.         tempString += b
  12.     lengths.append(int(tempString))
  13. while len(visited) != 6400:
  14.     start = shortTrack.index(min(shortTrack))
  15.     try:
  16.         if start % 80 != 79 and start + 1 not in visited:
  17.             if shortSaved[start] + lengths[start + 1] < shortSaved[start + 1]:
  18.                 shortSaved[start + 1] = shortSaved[start] + lengths[start + 1]
  19.                 shortTrack[start + 1] = shortSaved[start] + lengths[start + 1]
  20.     except IndexError:
  21.         pass
  22.     try:
  23.         if start <= 80**2 - 81 and start + 80 not in visited:
  24.             if shortSaved[start] + lengths[start + 80] < shortSaved[start + 80]:
  25.                 shortSaved[start + 80] = shortSaved[start] + lengths[start + 80]
  26.                 shortTrack[start + 80] = shortSaved[start] + lengths[start + 80]
  27.     except IndexError:
  28.         pass
  29.     visited.append(start)
  30.     shortTrack[start] = 10**10
  31. print(shortSaved[80**2-1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement