Advertisement
danchaofan

Euler #83

Dec 24th, 2018
122
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 = list(open('/p083_matrix.txt')), []
  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. visited, shortTrack, shortSaved = [], [lengths[0]] + [10**10]*(80**2 - 1), [lengths[0]] + [10**10]*(80**2 - 1)
  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.     try:
  30.         if start > 79 and start - 80 not in visited:
  31.             if shortSaved[start] + lengths[start - 80] < shortSaved[start - 80]:
  32.                 shortSaved[start - 80] = shortSaved[start] + lengths[start - 80]
  33.                 shortTrack[start - 80] = shortSaved[start] + lengths[start - 80]
  34.     except IndexError:
  35.         pass
  36.     try:
  37.         if start % 80 != 0 and start - 1 not in visited:
  38.             if shortSaved[start] + lengths[start - 1] < shortSaved[start - 1]:
  39.                 shortSaved[start - 1] = shortSaved[start] + lengths[start - 1]
  40.                 shortTrack[start - 1] = shortSaved[start] + lengths[start - 1]
  41.     except IndexError:
  42.         pass
  43.     if start not in visited:
  44.         visited.append(start)
  45.     shortTrack[start] = 10**10
  46. print(shortSaved[80**2 - 1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement