SimonJkAdamek

AOC day 21

Dec 21st, 2022
823
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.39 KB | Software | 0 0
  1. number_monkeys = dict()
  2. math_monkeys = dict()
  3.  
  4.  
  5. with open("input.txt") as file:
  6.     for line in file:
  7.         line=line.strip()
  8.         monkey, yell = line.split(": ")
  9.         if yell.isnumeric():
  10.             number_monkeys[monkey] = int(yell)
  11.         else:
  12.             math_monkeys[monkey] = yell
  13.  
  14. f_del=set()
  15. while math_monkeys:
  16.     for key in math_monkeys:
  17.         m1,o,m2 = math_monkeys[key].split()
  18.         if m1 in number_monkeys and m2 in number_monkeys:
  19.             n1=number_monkeys[m1]
  20.             n2=number_monkeys[m2]
  21.             match o:
  22.                 case '+':
  23.                     number_monkeys[key]=n1+n2
  24.                 case '-':
  25.                     number_monkeys[key]=n1-n2
  26.                 case '*':
  27.                     number_monkeys[key]=n1*n2
  28.                 case '/':
  29.                     number_monkeys[key]=n1/n2
  30.             f_del.add(key)
  31.     for i in f_del:
  32.         del(math_monkeys[i])
  33.         f_del=set()
  34.  
  35. print("Part 1:", round(number_monkeys["root"]))
  36.  
  37. #####################################################################################################################
  38.  
  39. from sympy import symbols, solveset, Eq
  40.  
  41. number_monkeys = dict()
  42. math_monkeys = dict()
  43.  
  44. with open("input.txt") as file:
  45.     for line in file:
  46.         line=line.strip()
  47.         monkey, yell = line.split(": ")
  48.  
  49.         if monkey=="humn":
  50.             continue
  51.         elif monkey=="root":
  52.             root=yell.split("+")
  53.         elif yell.isnumeric():
  54.             number_monkeys[monkey] = int(yell)
  55.         else:
  56.             math_monkeys[monkey] = yell
  57.  
  58. f_del=set()
  59. humn=symbols("humn")
  60. number_monkeys["humn"]=humn
  61.  
  62. while math_monkeys:
  63.     for key in math_monkeys:
  64.         m1,o,m2 = math_monkeys[key].split()
  65.         if m1 in number_monkeys and m2 in number_monkeys:
  66.             n1=number_monkeys[m1]
  67.             n2=number_monkeys[m2]
  68.             match o:
  69.                 case '+':
  70.                     number_monkeys[key]=n1+n2
  71.                 case '-':
  72.                     number_monkeys[key]=n1-n2
  73.                 case '*':
  74.                     number_monkeys[key]=n1*n2
  75.                 case '/':
  76.                     number_monkeys[key]=n1/n2
  77.             f_del.add(key)
  78.  
  79.     for i in f_del:
  80.         del(math_monkeys[i])
  81.         f_del=set()
  82.  
  83. x=number_monkeys[root[0].strip()]
  84. y=number_monkeys[root[1].strip()]
  85. print("Part 2:", *map(int,solveset(Eq(x,y), humn)))
  86.  
Advertisement
Add Comment
Please, Sign In to add comment