Fix bug in day 12 that wouldn't check velocities

master
Nick Krichevsky 2019-12-13 09:51:59 -05:00
parent d0262f7f7b
commit d30c28527b
1 changed files with 8 additions and 6 deletions

View File

@ -85,12 +85,12 @@ def part1(moons: Moon) -> int:
def part2(moons: Moon) -> int:
# Count until we hit the same thing (1 indicates that it will take one simulation to get the same value again),
# i.e. a nop
VELOCITY_FIELD_SUFFIX = '_velocity'
# Count until we hit the a 0 velocity and identical position to the starting position
counts = {
'x': 1,
'y': 1,
'z': 1,
'x': 0,
'y': 0,
'z': 0,
}
found_cycle = {
@ -107,7 +107,9 @@ def part2(moons: Moon) -> int:
continue
counts[key] += 1
found_cycle[key] = all(getattr(original_moons[i], key) == getattr(moon, key) for i, moon in enumerate(moons))
found_cycle[key] = all(getattr(original_moons[i], key) == getattr(moon, key)
and getattr(moons[i], key + VELOCITY_FIELD_SUFFIX) == 0
for i, moon in enumerate(moons))
return functools.reduce(lcm, counts.values())