From bf0cf2f9a65d92a6cadfed3acb7f3c0f18a5d2a6 Mon Sep 17 00:00:00 2001 From: npc-strider Date: Wed, 9 Dec 2020 14:48:18 +0800 Subject: [PATCH] day 9 --- 9/a.optimized_attempt.py | 23 +++++++++++++++ 9/a.py | 62 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 9/a.optimized_attempt.py create mode 100644 9/a.py diff --git a/9/a.optimized_attempt.py b/9/a.optimized_attempt.py new file mode 100644 index 0000000..3a2a8f2 --- /dev/null +++ b/9/a.optimized_attempt.py @@ -0,0 +1,23 @@ +import copy +import itertools + +preamble_len = 5 + +d = [ int(x) for x in open('input').read().splitlines() ] + +index = preamble_len + +def sums(d): + return [ sum(x) for x in list(itertools.combinations(d, 2)) ] + +s = sums(d[index-preamble_len:index]) +for n in d[preamble_len:]: + print(d[index-preamble_len:index]) + print(sorted(sums(d[index-preamble_len:index]))) + new = [ (x+y) for x in d[index-preamble_len:index-1] if (y := d[index-1]) ] + print(new) + print(sorted(s)) + print(n) + + index += 1 + s = copy.deepcopy(s)[4:]+new #4 is constant, combinations of 2 numbers \ No newline at end of file diff --git a/9/a.py b/9/a.py new file mode 100644 index 0000000..1a71fdf --- /dev/null +++ b/9/a.py @@ -0,0 +1,62 @@ +import copy +import itertools + +preamble_len = 25 + +d = [ int(x) for x in open('input').read().splitlines() ] + +def sums(d): + return [ sum(x) for x in list(itertools.combinations(d, 2)) ] + +def a(d): + index = preamble_len + for n in d[preamble_len:]: + if n not in sums(d[index-preamble_len:index]): + print(n) + return n + break + index += 1 + +def b(target,d): + index = 0 + current = [] + for i in range(len(d)): + # print('-') + # print(current) + j = 0 + pop = [] + for j_ in current: + # print(d[j_:i]) + s = sum(d[j_:i]) + if s == target: + l = d[j_:i] + print([l, min(l) + max(l)]) + elif s > target: + pop.append(j) + # print("POP") + # print(current) + j += 1 + [ current.pop(0) for x in pop ] + current.append(i) + + + # if acc + # print(l) + # break + # if acc > target: + # acc = 0 + # l = [] + # l = [] + # acc = 0 + # for n in d: + # l.append(n) + # acc += n + # if acc == target and n != target: + # print(l) + # break + # if acc > target: + # acc = 0 + # l = [] + + +b(a(d),d) \ No newline at end of file