SimonJkAdamek

AOC day 5

Dec 5th, 2022
533
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.94 KB | Source Code | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. import re
  4.  
  5. crates=""
  6. steps=""
  7.  
  8. def parse_crates(crates):
  9.     crates_list=[[] for num in crates.split("\n")[-2] if num.isnumeric()]              
  10.     crates=crates.split("\n")[:-2][::-1]
  11.  
  12.     for row in crates:
  13.         row=re.sub("[\[\]]","",row)
  14.         row=re.sub("(\s\s\s\s)"," ",row).split(" ")
  15.         [crates_list[i].append(row[i]) for i in range(len(row)) if row[i]]
  16.     return crates_list
  17.  
  18. with open("input.txt") as file:
  19.     for line in file:
  20.         if line.strip():
  21.             crates+=line
  22.         else:
  23.             break
  24.     commands_list=file.read().split("\n")[:-1]
  25.  
  26.  
  27. crates_list=parse_crates(crates)
  28. for command in commands_list:
  29.     count, from_stack, to_stack=[int(i) for i in re.findall("\d+", command)]
  30.     for _ in range(count):
  31.         crates_list[to_stack-1]+=crates_list[from_stack-1].pop()
  32.  
  33. print("".join([ch.pop() for ch in crates_list]))
  34.  
  35. #############################################################################################
  36.  
  37. #!/usr/bin/env python3
  38.  
  39. import re
  40.  
  41. crates=""
  42. steps=""
  43.  
  44.  
  45. def parse_crates(crates):
  46.     crates_list=[[] for num in crates.split("\n")[-2] if num.isnumeric()]              
  47.     crates=crates.split("\n")[:-2][::-1]
  48.  
  49.     for row in crates:
  50.         row=re.sub("[\[\]]","",row)
  51.         row=re.sub("(\s\s\s\s)"," ",row).split(" ")
  52.         [crates_list[i].append(row[i]) for i in range(len(row)) if row[i]]
  53.     return crates_list
  54.  
  55. with open("input.txt") as file:
  56.     for line in file:
  57.         if line.strip():
  58.             crates+=line
  59.         else:
  60.             break
  61.     commands_list=file.read().split("\n")[:-1]
  62.  
  63.  
  64. crates_list=parse_crates(crates)
  65. for command in commands_list:
  66.     count, from_stack, to_stack=[int(i) for i in re.findall("\d+", command)]
  67.    
  68.     stack=[]
  69.     for _ in range(count):
  70.         stack+=crates_list[from_stack-1].pop()
  71.     crates_list[to_stack-1]+=stack[::-1]
  72. print("".join([ch.pop() for ch in crates_list]))
  73.  
Advertisement
Add Comment
Please, Sign In to add comment