summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--20/py/d04.py3
-rw-r--r--20/py/d07.py6
-rw-r--r--20/py/d08.py7
-rw-r--r--20/py/d09.py20
-rw-r--r--20/py/driver.py32
5 files changed, 48 insertions, 20 deletions
diff --git a/20/py/d04.py b/20/py/d04.py
index a0a58a1..d0387f6 100644
--- a/20/py/d04.py
+++ b/20/py/d04.py
@@ -77,9 +77,7 @@ def pt2(_in):
want = {s for s in "byr iyr eyr hgt hcl ecl pid cid".split()}
for line in _in:
- print(repr(line))
if line == "\n":
- print(want)
if len(want) == 0 or (len(want) == 1 and "cid" in want):
valid += 1
want = {s for s in "byr iyr eyr hgt hcl ecl pid cid".split()}
@@ -88,7 +86,6 @@ def pt2(_in):
k, v = entry.strip().split(":")
if valid_entry(k, v):
want.remove(k)
- print(want)
if len(want) == 0 or (len(want) == 1 and "cid" in want):
valid += 1
return valid
diff --git a/20/py/d07.py b/20/py/d07.py
index 48fa3d2..f96c796 100644
--- a/20/py/d07.py
+++ b/20/py/d07.py
@@ -11,7 +11,7 @@ class Node:
self.children = children
def __iter__(self):
- yield from child for child, _ in self.children
+ yield from (child for child, _ in self.children)
def parse(_in):
@@ -50,7 +50,5 @@ if __name__ == "__main__":
input = open("../input/07", "r").readlines()
# graph(parse(input))
- start = time.time()
- print(pt2(input))
print(pt1(input))
- print(time.time() - start)
+ print(pt2(input))
diff --git a/20/py/d08.py b/20/py/d08.py
index 550fb3b..4ebee03 100644
--- a/20/py/d08.py
+++ b/20/py/d08.py
@@ -27,10 +27,11 @@ def run(prog):
def pt1(_in):
- return run(_in)[1]
+ return run(parse(_in))[1]
def pt2(_in):
+ _in = parse(_in)
for i in range(len(_in)):
prog = _in.copy()
inst, offset = prog[i]
@@ -50,9 +51,5 @@ if __name__ == "__main__":
input = open(sys.argv[1], "r").readlines()
else:
input = open("../input/08", "r").readlines()
- start = time.time()
- input = parse(input)
print(pt1(input))
- print("pt1 {:.3}".format(time.time() - start))
print(pt2(input))
- print("pt2 {:.3}".format(time.time() - start))
diff --git a/20/py/d09.py b/20/py/d09.py
index 4379039..9950f16 100644
--- a/20/py/d09.py
+++ b/20/py/d09.py
@@ -7,23 +7,28 @@ def intify(_in):
return list(int(n.strip()) for n in _in)
-def pt1(_in):
+def first_invalid(nums):
valid = []
for i in range(25):
for j in range(i+1, 25):
- valid.append(_in[i] + _in[j])
- for i in range(25, len(_in)):
- if _in[i] not in valid:
- return _in[i]
+ valid.append(nums[i] + nums[j])
+ for i in range(25, len(nums)):
+ if nums[i] not in valid:
+ return nums[i]
valid = valid[24:]
offset = 0
for j in range(1, 25)[::-1]:
- valid.insert(offset, _in[i - j] + _in[i])
+ valid.insert(offset, nums[i - j] + nums[i])
offset += j
+def pt1(_in):
+ return first_invalid(intify(_in))
+
+
def pt2(_in):
- invalid = pt1(_in)
+ _in = intify(_in)
+ invalid = first_invalid(_in)
i, s, nums = 0, 0, deque()
while s != invalid:
@@ -44,6 +49,5 @@ if __name__ == "__main__":
input = open(sys.argv[1], "r").readlines()
else:
input = open("../input/09", "r").readlines()
- input = intify(input)
print(pt1(input))
print(pt2(input))
diff --git a/20/py/driver.py b/20/py/driver.py
new file mode 100644
index 0000000..8b0fa03
--- /dev/null
+++ b/20/py/driver.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+import sys
+import time
+
+import d01
+import d02
+import d03
+import d04
+import d05
+import d06
+import d07
+import d08
+import d09
+
+
+print("day part | time | tot_time | ans")
+print("---------+--------+----------+-----------")
+
+time_to_here = 0
+for day, mod in enumerate((d01, d02, d03, d04, d05,
+ d06, d07, d08, d09)):
+ input = open(f"../input/{day+1:02}").readlines()
+ for part, part_func in enumerate((mod.pt1, mod.pt2)):
+ times = []
+ for i in range(100 if "time" in sys.argv else 5):
+ start = time.time()
+ ans = part_func(input)
+ ans_time = time.time()
+ times.append(ans_time-start)
+ avg_time = sum(times) / len(times)
+ time_to_here += avg_time
+ print(f"{day+1:02} {part+1} | {avg_time*1000:6.3f} | {time_to_here*1000:6.3f} | {ans}")