Advertisement
Guest User

Untitled

a guest
Dec 5th, 2022
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.04 KB | None | 0 0
  1. from copy import deepcopy
  2. import re
  3.  
  4. inputFile = open('day5.txt', 'r')
  5. stack, moves = inputFile.read().split("\n\n")
  6.  
  7. stks = [[] for _ in range(10)]
  8.  
  9. for line in stack.split("\n"):
  10.     for i in range(0, len(line), 4):
  11.         block = line[i:i+4]
  12.         if '[' in block:
  13.             stks[i//4].append(block[1])
  14.  
  15. for i in range(len(stks)):
  16.     stks[i] = stks[i][::-1]
  17.  
  18. orig_stks = deepcopy(stks)
  19. for move in moves.split("\n"):
  20.     count, fromi, toj = [int(x) for x in re.findall(r'\d+', move)]
  21.     fromi -= 1
  22.     toj -= 1
  23.     while count and stks[fromi]:
  24.         stks[toj].append(stks[fromi].pop())
  25.         count -= 1
  26.    
  27. top = ""
  28. for s in stks:
  29.     if s:
  30.         top += s[-1]
  31. print(top)
  32.  
  33. for move in moves.split("\n"):
  34.     count, fromi, toj = [int(x) for x in re.findall(r'\d+', move)]
  35.     fromi -= 1
  36.     toj -= 1
  37.     n = len(orig_stks[fromi])
  38.     orig_stks[toj] += orig_stks[fromi][n - count:]
  39.     orig_stks[fromi] = orig_stks[fromi][:n - count]
  40.  
  41.  
  42. top = ""
  43. for s in orig_stks:
  44.     if s:
  45.         top += s[-1]
  46. print(top)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement