diff options
Diffstat (limited to '2022/day11/asd.py')
| -rwxr-xr-x | 2022/day11/asd.py | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/2022/day11/asd.py b/2022/day11/asd.py deleted file mode 100755 index f89179c..0000000 --- a/2022/day11/asd.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python3 - -# import numpy as np -from functools import reduce -from re import findall -from copy import deepcopy -import sys - -# filename = "ref.txt" -filename = "pzl.txt" -data = open(filename).read() - -num_mon = len([None for _ in data.split('\n\n')]) - -mons = list() -itmss = list() -for m in data.split('\n\n'): - lines = [line for line in m.rstrip('\n').split('\n')] - mon = dict() - # mon['n'] = int(lines[0][-2]) - # mon['items'] = [int(i.strip()) for i in lines[1].split(':')[-1].split(',')] - itmss.append([int(i.strip()) for i in lines[1].split(':')[-1].split(',')]) - mon['op'] = lines[2].split('=')[-1].strip() - mon['test'] = int(lines[3].split(' ')[-1]) - mon['true'] = int(lines[4].split(' ')[-1]) - mon['false'] = int(lines[5].split(' ')[-1]) - mons.append(mon) - -# for mon,itms in zip(mons,itmss): -# print(mon) -# print(itms) - -def get_next_one_ape(n, old_timss, sums, div=0, mod=0): - new_itmss = [list() for _ in old_timss] - - for ape,itms in enumerate(old_timss): - for wl in itms: - if n == ape: - old = wl - wl = eval(mons[ape]['op']) - if div != 0: - wl = int(wl/div) - if mod != 0: - wl = wl % mod - sums[ape] += 1 - if wl % mons[ape]['test'] == 0: - new_itmss[mons[ape]['true']].append(wl) - else: - new_itmss[mons[ape]['false']].append(wl) - else: - new_itmss[ape].append(wl) - return new_itmss, sums - - -def get_next(itmss, sums, div=0, mod=0): - for ape,itms in enumerate(itmss): - itmss, sums = get_next_one_ape(ape, itmss, sums, div=div, mod=mod) - return itmss, sums - - -res1 = 0 -div1 = 3 -sums1 = [0 for _ in itmss] -itmss1 = itmss -for i in range(20): - itmss1, sums1 = get_next(itmss1, sums1, div=div1) -res1 = reduce(lambda x,y:x*y, sorted(sums1, reverse=True)[:2]) - - -res2 = 0 -mod2 = reduce(lambda x,y:x*y, map(lambda a:a['test'],mons)) -sums2 = [0 for _ in itmss] -itmss2 = itmss -for i in range(1, 10001): - itmss2, sums2 = get_next(itmss2, sums2, mod=mod2) - # if i in [1, 20, 100, 200, 300, 400, 500, 1000, 2000, 10000]: - # print(i, sums2) -res2 = reduce(lambda x,y:x*y, sorted(sums2, reverse=True)[:2]) - -print('res1:', res1) -print('res2:', res2) - |
