advent-of-code/2015-python/solutions/day_20.py
Anders Englöf Ytterström 5a5e843129
2015, day 16-25 (first completed calendar!) (#11)
* Solve 2015:16 "Aunt Sue"

* Make 2023:08 future compatible

Code used to work with another version of python.

* Solve 2015:17 "No such Thing as Too much"

* Solve 2015:18 "Like a GIF For Your Yard"

Also solve 2015:06 just in case, was just a ref
in the end.

* Solve 2015:19 "Medicine for Rudolph"

* Solve 2015:20 "Infinite Elves and Infinite Houses"

* Solve 2023:21 "RPG Simulator 20XX"

* Solve 2015:22 "Wizard Simulator 20XX"

* Solve 2015:23 "Opening the Turing Lock"

* Solve 2015:25 "Let it Snow"

Wrote p2rc and rc2p just for academic purposes.
Puzzles could be solved anyway.

* Solve 2015:24 "Hangs in the Balance"

---------

Co-authored-by: Anders Englöf Ytterström <anders@playmaker.ai>
2023-12-19 14:24:28 +01:00

51 lines
1.2 KiB
Python

from collections import defaultdict
from solutions import BaseSolution
class Solution(BaseSolution):
input_file = "20.txt"
def __str__(self):
return "Day 20: Infinite Elves and Infinite Houses"
def solve(self, pi):
S = 36_000_000
# hn = 831601
# x1 = defaultdict(int)
# for i in range(1, hn):
# for n in range(0, hn, i):
# if n == 0:
# continue
# x1[n] += i * 10
# for k, v in x1.items():
# if v >= S:
# print(k, v)
hn = 885000
hc = 50
x2 = defaultdict(int)
for i in range(1, hn):
for n in range(0, hc * i + 1, i):
if n == 0:
continue
x2[n] += i * 11
# p1 = max(x1.items(), key=lambda y: y[1])[0]
p2 = min(filter(lambda x: x[1] >= S, x2.items()), key=lambda y: y[0])[0]
return 0, p2
def solve_again(self, pi):
return pi
def parse_input(self, data):
return data.strip()
if __name__ == "__main__":
solution = Solution()
# solution.show_results()
dummy = """
replace me
""".strip()
print(solution.solve(dummy))
# solution.solve_again(dummy)