Advertisement
danchaofan

Euler #82

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