mirror of
https://github.com/Crocmagnon/advent-of-code.git
synced 2024-11-21 14:08:11 +01:00
Solve day9 part 2
This commit is contained in:
parent
41fec62b96
commit
3873358c14
2 changed files with 39 additions and 3 deletions
|
@ -87,9 +87,37 @@ def solve_part_1(instructions: DataType) -> int:
|
|||
|
||||
|
||||
def solve_part_2(instructions: DataType) -> int:
|
||||
return 0
|
||||
head = Point()
|
||||
tails = [Point() for _ in range(9)]
|
||||
visited = set()
|
||||
for instruction in instructions:
|
||||
print(instruction)
|
||||
count = instruction[1]
|
||||
while count > 0:
|
||||
head.move(instruction)
|
||||
tails[0].follow(head)
|
||||
for i in range(1, len(tails)):
|
||||
tails[i].follow(tails[i - 1])
|
||||
tail_tuple = tails[-1].tuple
|
||||
visited.add(tail_tuple)
|
||||
count -= 1
|
||||
# print_grid([head, *tails])
|
||||
return len(visited)
|
||||
|
||||
|
||||
def print_grid(rope: list[Point], size: tuple[int, int] = (21, 27)) -> None:
|
||||
rope = [knot.tuple for knot in rope]
|
||||
for row in range(int(-size[0] / 2), int(size[0] / 2)):
|
||||
for col in range(int(-size[1] / 2), int(size[1] / 2)):
|
||||
try:
|
||||
char = rope.index((col, row))
|
||||
except ValueError:
|
||||
char = "."
|
||||
print(char, end="")
|
||||
print()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main("inputs/day09-test1", expected_part_1=13)
|
||||
main("inputs/day09", expected_part_1=5619)
|
||||
main("inputs/day09-test1", expected_part_1=13, expected_part_2=1)
|
||||
main("inputs/day09-test2", expected_part_2=36)
|
||||
main("inputs/day09", expected_part_1=5619, expected_part_2=2376)
|
||||
|
|
8
2022/inputs/day09-test2
Normal file
8
2022/inputs/day09-test2
Normal file
|
@ -0,0 +1,8 @@
|
|||
R 5
|
||||
U 8
|
||||
L 8
|
||||
D 3
|
||||
R 17
|
||||
D 10
|
||||
L 25
|
||||
U 20
|
Loading…
Reference in a new issue