123456789101112131415161718192021222324252627 |
- #!/usr/bin/python3
-
- import operator
-
- with open('data/02.txt', 'r') as file:
- input = [x.strip() for x in file.readlines()]
-
- dirs = {'U': (0, -1), 'D': (0, 1), 'L': (-1, 0), 'R': (1, 0)}
- parts = {1: {(0, 0): '1', (1, 0): '2', (2, 0): '3',
- (0, 1): '4', (1, 1): '5', (2, 1): '6',
- (0, 2): '7', (1, 2): '8', (2, 2): '9'},
-
- 2: { (2, 0): '1',
- (1, 1): '2', (2, 1): '3', (3, 1): '4',
- (0, 2): '5', (1, 2): '6', (2, 2): '7', (3, 2): '8', (4, 2): '9',
- (1, 3): 'A', (2, 3): 'B', (3, 3): 'C',
- (2, 4): 'D'}}
-
- for part, keys in parts.items():
- pos = list(keys.keys())[list(keys.values()).index('5')]
- ans = ''
- for line in input:
- for move in map(dirs.get, line):
- next_pos = tuple(map(operator.add, pos, move))
- pos = next_pos if next_pos in keys else pos
- ans += keys[pos]
- print('Part %s: %s' % (part, ans))
|