Solve day 13 2017.

This commit is contained in:
felixm 2024-05-21 22:00:35 -04:00
parent 1a71ab97c3
commit 4ba0b25b77
2 changed files with 54 additions and 1 deletions

52
2017/d13.py Normal file
View File

@ -0,0 +1,52 @@
from lib import str_to_ints
def part_1(data):
layer_to_depth = {}
for line in data.splitlines():
a, b = str_to_ints(line)
layer_to_depth[a] = b
layer_to_pos = {l: 0 for l in layer_to_depth.keys()}
layer_to_dir = {l: -1 for l in layer_to_depth.keys()}
target = max(list(layer_to_depth.keys()))
r = 0
layer = 0
while layer <= target:
if layer in layer_to_pos and layer_to_pos[layer] == 0:
r += (layer * layer_to_depth[layer])
for k in layer_to_pos.keys():
if layer_to_pos[k] == 0 or (layer_to_pos[k] + 1) == layer_to_depth[k]:
layer_to_dir[k] *= -1
layer_to_pos[k] += layer_to_dir[k]
layer += 1
print(r)
def part_2(data):
eqs = []
for line in data.splitlines():
layer, depth = str_to_ints(line)
period = (depth - 1) * 2
eqs.append((layer, period))
for delay in range(1, 1_000_000_000):
for layer, period in eqs:
if (delay + layer) % period == 0:
break
else:
print(delay)
return
def main():
data = open(0).read().strip()
part_1(data)
part_2(data)
if __name__ == "__main__":
main()

View File

@ -73,4 +73,5 @@ written in Python.
- Day 10: 55:00 - Day 10: 55:00
- Day 11: 66:06 - Day 11: 66:06
- Day 12: 6:44 - Day 12: 6:44
- Day 13: - Day 13: 120:00
- Day 14: