Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- raw, lengths = list(open('/p083_matrix.txt')), []
- for a in raw:
- a.rstrip('\n')
- tempString = ""
- for b in a:
- if b == ",":
- lengths.append(int(tempString))
- tempString = ""
- continue
- tempString += b
- lengths.append(int(tempString))
- visited, shortTrack, shortSaved = [], [lengths[0]] + [10**10]*(80**2 - 1), [lengths[0]] + [10**10]*(80**2 - 1)
- while len(visited) != 6400:
- start = shortTrack.index(min(shortTrack))
- try:
- if start % 80 != 79 and start + 1 not in visited:
- if shortSaved[start] + lengths[start + 1] < shortSaved[start + 1]:
- shortSaved[start + 1] = shortSaved[start] + lengths[start + 1]
- shortTrack[start + 1] = shortSaved[start] + lengths[start + 1]
- except IndexError:
- pass
- try:
- if start <= 80**2 - 81 and start + 80 not in visited:
- if shortSaved[start] + lengths[start + 80] < shortSaved[start + 80]:
- shortSaved[start + 80] = shortSaved[start] + lengths[start + 80]
- shortTrack[start + 80] = shortSaved[start] + lengths[start + 80]
- except IndexError:
- pass
- try:
- if start > 79 and start - 80 not in visited:
- if shortSaved[start] + lengths[start - 80] < shortSaved[start - 80]:
- shortSaved[start - 80] = shortSaved[start] + lengths[start - 80]
- shortTrack[start - 80] = shortSaved[start] + lengths[start - 80]
- except IndexError:
- pass
- try:
- if start % 80 != 0 and start - 1 not in visited:
- if shortSaved[start] + lengths[start - 1] < shortSaved[start - 1]:
- shortSaved[start - 1] = shortSaved[start] + lengths[start - 1]
- shortTrack[start - 1] = shortSaved[start] + lengths[start - 1]
- except IndexError:
- pass
- if start not in visited:
- visited.append(start)
- shortTrack[start] = 10**10
- print(shortSaved[80**2 - 1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement