12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from copy import deepcopy
- from util import get_input
- input = get_input("25.input")
- grid = [[c for c in line] for line in input]
- grid_size = (len(grid[0]), len(grid))
- def print_grid(grid):
- for line in grid:
- print("".join(line))
- print("-" * 20)
- def step(grid):
- moved = False
- new_grid = deepcopy(grid)
- for y, line in enumerate(grid):
- for x, c in enumerate(line):
- if c == '>' and grid[y][(x + 1) % grid_size[0]] == '.':
- moved = True
- new_grid[y][x] = '.'
- new_grid[y][(x + 1) % grid_size[0]] = '>'
- new_new_grid = deepcopy(new_grid)
- for y, line in enumerate(new_grid):
- for x, c in enumerate(line):
- if c == 'v' and new_grid[(y + 1) % grid_size[1]][x] == '.':
- moved = True
- new_new_grid[y][x] = '.'
- new_new_grid[(y + 1) % grid_size[1]][x] = 'v'
- return (moved, new_new_grid)
- print_grid(grid)
- i = 0
- while True:
- i += 1
- moved, grid = step(grid)
- if not moved:
- break
- #print_grid(grid)
- print(i)
- #print_grid(grid)
- print("Part 1:", i)
|