Skip to content

Commit 9756e62

Browse files
committed
runner for 1 day
1 parent c03c1d7 commit 9756e62

File tree

7 files changed

+71
-13
lines changed

7 files changed

+71
-13
lines changed

aoc_wim/aoc2016/q08.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def part_a(data):
2222
return A.sum()
2323

2424

25-
def part_b(data, dump=False):
25+
def part_b(data, dump=True):
2626
A = parsed(data)
2727
if dump:
2828
print("\n")

aoc_wim/aoc2018/q07.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def work(data, n_workers=4, delay=60):
6161
w.t = 1
6262
else:
6363
w.t = ord(x) - ord('A') + 1 + delay
64-
log.debug('%3d: %s %s', t, ' '.join(w.has for w in workers), text)
6564
t += 1
65+
log.info('%4d: %s %s', t, ' '.join(w.has for w in workers), text)
6666
result = SimpleNamespace(text=text, n_iterations=t)
6767
return result
6868

aoc_wim/aoc2018/q10.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def varianceish(a):
4242
return a.std(axis=1)[:2].sum()
4343

4444

45-
def ocr(a, lettersize, draw=False):
45+
def ocr(a, lettersize, draw=True):
4646
ps = a[:2].copy()
4747
ps -= ps.min(axis=1).reshape(-1, 1)
4848
W, H = ps.max(axis=1) + 1
@@ -74,7 +74,7 @@ def ocr(a, lettersize, draw=False):
7474
return ''.join(letters)
7575

7676

77-
def part_ab(data, debug=False, lettersize=(10, 8)):
77+
def part_ab(data, debug=True, lettersize=(10, 8)):
7878
numbers = [int(x) for x in re.findall("-?\d+", data)]
7979
a = np.array(numbers).reshape(-1, 4).T
8080
t = 0

aoc_wim/aoc2018/q20.py

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ def part_ab(data):
8989
assert a == expected
9090

9191

92+
render(data)
9293
a, b = part_ab(data)
9394
print("part a:", a)
9495
print("part b:", b)

aoc_wim/aoc2018/q24.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def attack(self):
7676
kills = self.damage(self.target) // self.target.hp
7777
kills = min(kills, self.target.n)
7878
self.target.n -= kills
79-
log.debug(
79+
log.info(
8080
"%s group %d attacks defending group %d, killing %d units",
8181
self.system.name, self.id, self.target.id, kills,
8282
)
@@ -94,7 +94,7 @@ def select_target_from(self, other_groups):
9494
for other_group in other_groups:
9595
damage = self.damage(other_group)
9696
if damage > 0:
97-
log.debug(
97+
log.info(
9898
"%s group %d would deal defending group %d %d damage",
9999
self.system.name, self.id, other_group.id, damage,
100100
)
@@ -126,22 +126,22 @@ def attacking_phase(self):
126126

127127
def tick(self):
128128
for system in self.immune, self.infection:
129-
log.debug(system.name + ":")
129+
log.info(system.name + ":")
130130
if system.alive:
131131
for group in system.groups:
132132
if group.alive:
133-
log.debug("Group %d contains %d units", group.id, group.n)
133+
log.info("Group %d contains %d units", group.id, group.n)
134134
else:
135-
log.debug("No groups remain.")
136-
log.debug("")
135+
log.info("No groups remain.")
136+
log.info("")
137137
self.target_selection_phase()
138-
log.debug("")
138+
log.info("")
139139
n_before = self.immune.n + self.infection.n
140140
self.attacking_phase()
141141
n_after = self.immune.n + self.infection.n
142142
if n_after == n_before:
143143
raise StaleMate
144-
log.debug("")
144+
log.info("")
145145
self.ticks += 1
146146

147147
def run_until_complete(self):

aoc_wim/cli.py

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
"""Wim's solutions for https://adventofcode.com/"""
2+
import logging
3+
import os
4+
import runpy
5+
import sys
6+
from argparse import ArgumentParser
7+
from datetime import datetime
8+
from shutil import copy
9+
10+
from aocd.get import most_recent_year
11+
from aocd.models import Puzzle
12+
from aocd.utils import AOC_TZ
13+
14+
15+
def run_one():
16+
parser = ArgumentParser(description=__doc__)
17+
aoc_now = datetime.now(tz=AOC_TZ)
18+
parser.add_argument(
19+
"day",
20+
nargs="?",
21+
type=int,
22+
choices=range(1, 26),
23+
default=min(aoc_now.day, 25) if aoc_now.month == 12 else 1,
24+
help="1-25 (default: %(default)s)",
25+
)
26+
parser.add_argument(
27+
"year",
28+
nargs="?",
29+
type=int,
30+
choices=range(2015, aoc_now.year + int(aoc_now.month == 12)),
31+
default=most_recent_year(),
32+
help=">= 2015 (default: %(default)s)",
33+
)
34+
parser.add_argument("-d", "--data")
35+
log_levels = "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"
36+
parser.add_argument("--log-level", choices=log_levels)
37+
args = parser.parse_args()
38+
if args.log_level:
39+
level_int = getattr(logging, args.log_level)
40+
logging.basicConfig(format="%(message)s", level=level_int)
41+
mod_name = f"aoc_wim.aoc{args.year}.q{args.day:02d}"
42+
sys.modules.pop(mod_name, None)
43+
if args.data is not None:
44+
os.environ["AOC_SESSION"] = "aocw"
45+
path = os.path.expanduser("~/.config/aocd/aocw/")
46+
os.makedirs(path, exist_ok=True)
47+
path += f"{args.year}_{args.day:02d}_input.txt"
48+
if os.path.isfile(args.data):
49+
copy(args.data, path)
50+
else:
51+
with open(path, "w") as f:
52+
print(args.data, file=f)
53+
print(f"--- {args.year} Day {args.day}: {Puzzle(args.year, args.day).title} ---")
54+
runpy.run_module(mod_name, run_name="__main__")

setup.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,8 @@
2929
"wimpy",
3030
],
3131
packages=find_packages(),
32-
entry_points={"adventofcode.user": ["wim = aoc_wim:plugin"]},
32+
entry_points={
33+
"adventofcode.user": ["wim = aoc_wim:plugin"],
34+
"console_scripts": ["aocw = aoc_wim.cli:run_one"],
35+
},
3336
)

0 commit comments

Comments
 (0)