Skip to content

Commit 6fb47e3

Browse files
Update all python solutions to use timer function
1 parent 9fc99d9 commit 6fb47e3

File tree

149 files changed

+149
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

149 files changed

+149
-0
lines changed

2015/01/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from aoc.parser import Parser
33

44

5+
@answer.timer
56
def main() -> None:
67
data = Parser().string()
78
answer.part1(232, get_floor(data, False))

2015/02/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def ribbon_needed(self) -> int:
2222
return perimeter + volume
2323

2424

25+
@answer.timer
2526
def main() -> None:
2627
paper, ribbon = [], []
2728
for line in Parser().lines():

2015/03/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
DIRECTIONS = {"^": Point(0, 1), "v": Point(0, -1), "<": Point(-1, 0), ">": Point(1, 0)}
66

77

8+
@answer.timer
89
def main() -> None:
910
answer.part1(2081, run(1))
1011
answer.part2(2341, run(2))

2015/04/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from aoc.parser import Parser
55

66

7+
@answer.timer
78
def main() -> None:
89
prefix = Parser(strip=True).string()
910
five_leading_0s = first_index(prefix, 5, 1)

2015/05/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def creates_tripple(self) -> bool:
6363
return False
6464

6565

66+
@answer.timer
6667
def main() -> None:
6768
words = [Word(line) for line in Parser().lines()]
6869
answer.part1(238, total_nice_words(words, False))

2015/06/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def to_point(coords: str) -> tuple[int, int]:
3737
return (int(values[0]), int(values[1]))
3838

3939

40+
@answer.timer
4041
def main() -> None:
4142
directions = [Direction(line) for line in Parser().lines()]
4243
answer.part1(400410, apply_all(directions, SINGLE))

2015/07/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def get_value(self, diagram: dict[str, Self], index: int):
4141
return int(variable)
4242

4343

44+
@answer.timer
4445
def main() -> None:
4546
first = evaluate(None)
4647
answer.part1(3176, first)

2015/08/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def encode(self) -> int:
3434
return len(result)
3535

3636

37+
@answer.timer
3738
def main() -> None:
3839
strings: list[String] = [String(line) for line in Parser().lines()]
3940
total = sum([s.total() for s in strings])

2015/09/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from aoc.parser import Parser
55

66

7+
@answer.timer
78
def main() -> None:
89
distances = get_distances()
910
locations = get_locations(distances)

2015/10/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def play(self) -> None:
1818
self.value = next_value
1919

2020

21+
@answer.timer
2122
def main() -> None:
2223
game = Game(Parser(strip=True).int_string())
2324
answer.part1(360154, run(game, 40))

2015/11/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ def to_index(character: str) -> int:
6868
return ord(character) - ord("a")
6969

7070

71+
@answer.timer
7172
def main() -> None:
7273
value = Parser(strip=True).string()
7374
generator = PasswordGenerator(value)

2015/12/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from aoc.parser import Parser
66

77

8+
@answer.timer
89
def main() -> None:
910
answer.part1(111754, get_total(False))
1011
answer.part2(65402, get_total(True))

2015/13/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def __getitem__(self, i: int) -> str:
2121
return self.people[i % len(self.people)]
2222

2323

24+
@answer.timer
2425
def main() -> None:
2526
graph = get_graph()
2627
answer.part1(709, max_score(graph, False))

2015/14/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def distance(self, elapsed_time: int) -> int:
1515
return self.speed * ((complete * self.time) + min(remainder, self.time))
1616

1717

18+
@answer.timer
1819
def main() -> None:
1920
reindeers = get_reindeers()
2021
answer.part1(2655, max(distances_after(reindeers, 2_503)))

2015/15/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def get_values(self, proportion: list[int]) -> tuple[int, int]:
4848
return score, calories
4949

5050

51+
@answer.timer
5152
def main() -> None:
5253
recipe = Recipe(get_ingredients(), 100)
5354
answer.part1(18965440, recipe.best_score())

2015/16/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def does_match(self, aunt: Aunt, calibrate: bool) -> bool:
3535
return True
3636

3737

38+
@answer.timer
3839
def main() -> None:
3940
groups = Parser().line_groups()
4041
match, aunts = get_match(groups[0]), get_aunts(groups[1])

2015/17/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from aoc.parser import Parser
55

66

7+
@answer.timer
78
def main() -> None:
89
combinations = get_combinations(Parser().int_lines(), 150)
910
answer.part1(1304, len(combinations))

2015/18/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def lights_on(self) -> int:
5858
return len(self.on)
5959

6060

61+
@answer.timer
6162
def main() -> None:
6263
grid = Parser().as_grid()
6364
answer.part1(1061, run(grid, False))

2015/19/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def replace_at(self, value: str, index: int) -> str:
2020
return before + after.replace(self.start, self.end, 1)
2121

2222

23+
@answer.timer
2324
def main() -> None:
2425
groups = Parser().line_groups()
2526
rules = get_rules(groups[0])

2015/20/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from aoc.parser import Parser
33

44

5+
@answer.timer
56
def main() -> None:
67
goal = Parser().integer()
78
answer.part1(665280, find_first(goal, False))

2015/21/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def attack(self, opponent: Self) -> None:
6464
opponent.hp -= max(damage, 1)
6565

6666

67+
@answer.timer
6768
def main() -> None:
6869
groups = Parser().line_groups()
6970
inventory = Inventory(

2015/22/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ def run_spells(
129129
return player, enemy, active_spells
130130

131131

132+
@answer.timer
132133
def main() -> None:
133134
lines = Parser().lines()
134135
hp, attack = int(lines[0].split()[-1]), int(lines[1].split()[-1])

2015/23/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def run(self, computer: Computer) -> int:
5454
raise Exception(f"Unknown operation: {self.op}")
5555

5656

57+
@answer.timer
5758
def main() -> None:
5859
answer.part1(170, run_computer(0))
5960
answer.part2(247, run_computer(1))

2015/24/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def entaglement(values: tuple[int]) -> int:
4545
return result
4646

4747

48+
@answer.timer
4849
def main() -> None:
4950
organizer = Organizer(weights=Parser().int_lines())
5051
answer.part1(10439961859, organizer.run(3))

2015/25/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from aoc.parser import Parser
33

44

5+
@answer.timer
56
def main() -> None:
67
values = Parser().entries()
78
index = get_index(int(values[-3][:-1]), int(values[-1][:-1]))

2016/01/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
DIRECTIONS: list[Point] = [Point(0, 1), Point(1, 0), Point(0, -1), Point(-1, 0)]
66

77

8+
@answer.timer
89
def main() -> None:
910
visited = traverse()
1011
answer.part1(252, len(visited[-1]))

2016/02/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
)
1111

1212

13+
@answer.timer
1314
def main() -> None:
1415
answer.part1("47978", get_code([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
1516
answer.part2(

2016/03/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def valid(self) -> bool:
1414
return (sides[0] + sides[1]) > sides[2]
1515

1616

17+
@answer.timer
1718
def main() -> None:
1819
answer.part1(862, num_valid(vertically()))
1920
answer.part2(1577, num_valid(horizontally()))

2016/04/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def decrypt(self) -> str:
3131
return "".join(decrypted)
3232

3333

34+
@answer.timer
3435
def main() -> None:
3536
rooms = [room for room in get_rooms() if room.valid()]
3637
answer.part1(278221, sum([room.sector_id for room in rooms]))

2016/05/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from aoc.parser import Parser
55

66

7+
@answer.timer
78
def main() -> None:
89
door_id = Parser().string()
910
answer.part1("d4cd2ee1", generate_password(door_id, populate_v1))

2016/06/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from aoc.parser import Parser
55

66

7+
@answer.timer
78
def main() -> None:
89
answer.part1("liwvqppc", error_correct_message(-1))
910
answer.part2("caqfbzlh", error_correct_message(0))

2016/07/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def subsequence(self, sequence: str, length: int) -> list[str]:
4040
return result
4141

4242

43+
@answer.timer
4344
def main() -> None:
4445
ips = get_ip_addresses()
4546
answer.part1(118, sum([ip.tls() for ip in ips]))

2016/08/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def apply(self, display: Grid) -> None:
3636
raise Exception("Unknwon operation: {}".format(self.value))
3737

3838

39+
@answer.timer
3940
def main() -> None:
4041
w, h = 50, 6
4142
display = create_display(w, h)

2016/09/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def get_repeat_details(self, start: int) -> tuple[int, int, int]:
3333
return end, int(length), int(times)
3434

3535

36+
@answer.timer
3637
def main() -> None:
3738
answer.part1(102239, decompress(False))
3839
answer.part2(10780403063, decompress(True))

2016/10/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def held_all_values(self, values: list[int]) -> bool:
4646
return True
4747

4848

49+
@answer.timer
4950
def main() -> None:
5051
initial_values, bots = get_data()
5152
outputs = defaultdict(list)

2016/11/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ def __lt__(self, o: Self) -> bool:
105105
return len(self.get(3)) < len(o.get(3))
106106

107107

108+
@answer.timer
108109
def main() -> None:
109110
answer.part1(37, count_steps([]))
110111
additional_items = [

2016/12/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from aoc.parser import Parser
44

55

6+
@answer.timer
67
def main() -> None:
78
answer.part1(318117, run(0))
89
answer.part2(9227771, run(1))

2016/13/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def is_wall(self, point: Point) -> bool:
2929
return num_ones % 2 == 1
3030

3131

32+
@answer.timer
3233
def main() -> None:
3334
maze = Maze(grid=Grid(), favorite_number=Parser().integer())
3435
start, goal = Point(1, 1), Point(31, 39)

2016/14/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class HashInfo:
1212
cinqs: list[str]
1313

1414

15+
@answer.timer
1516
def main() -> None:
1617
prefix = Parser(strip=True).string()
1718
answer.part1(15168, generate(prefix, 1))

2016/15/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def passes(self, time: int) -> bool:
1515
return position % self.positions == 0
1616

1717

18+
@answer.timer
1819
def main() -> None:
1920
answer.part1(121834, calculate_first_pass(False))
2021
answer.part2(3208099, calculate_first_pass(True))

2016/16/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from aoc.parser import Parser
33

44

5+
@answer.timer
56
def main() -> None:
67
answer.part1("10010101010011101", fill_disk(272))
78
answer.part2("01100111101101111", fill_disk(35_651_584))

2016/17/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
]
1414

1515

16+
@answer.timer
1617
def main() -> None:
1718
code = Parser(strip=True).string()
1819
paths = search.bfs_paths(((-3, 3), code), (0, 0), get_adjacent)

2016/18/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from aoc.parser import Parser
33

44

5+
@answer.timer
56
def main() -> None:
67
starting_row = [v == "." for v in Parser(strip=True).string()]
78
answer.part1(2013, total_safe(starting_row, 40))

2016/19/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from aoc.parser import Parser
55

66

7+
@answer.timer
78
def main() -> None:
89
num_elves = Parser().integer()
910
answer.part1(1834903, solve_by_pattern(num_elves, True))

2016/20/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def join(self, os: list[Self]) -> Self:
2323
return type(self)(min(starts), max(ends))
2424

2525

26+
@answer.timer
2627
def main() -> None:
2728
data_ranges = get_data_ranges()
2829
data_ranges = combine_all(data_ranges)

2016/21/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ def __str__(self) -> str:
9999
return "".join(self.value)
100100

101101

102+
@answer.timer
102103
def main() -> None:
103104
lines = Parser().lines()
104105
answer.part1("bdfhgeca", scramble(lines, "abcdefgh"))

2016/22/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def could_store(self, o) -> bool:
2424
Nodes = dict[Point, Node]
2525

2626

27+
@answer.timer
2728
def main() -> None:
2829
nodes = get_nodes()
2930
answer.part1(910, viable_connections(nodes))

2016/23/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from aoc.parser import Parser
66

77

8+
@answer.timer
89
def main() -> None:
910
answer.part1(11662, run(7))
1011
# Ends up simplifying to n! + 77*86

2016/24/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def get_adjacent(self, p: Point) -> list[Point]:
4747
return result
4848

4949

50+
@answer.timer
5051
def main() -> None:
5152
distances = get_grid().compute_distances()
5253
answer.part1(498, traverse(distances, False))

2016/25/solver.py

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from aoc.parser import Parser
44

55

6+
@answer.timer
67
def main() -> None:
78
answer.part1(198, run_until_success())
89

0 commit comments

Comments
 (0)