Skip to content

Commit 09a2da7

Browse files
committed
Alternative.
1 parent b77e29e commit 09a2da7

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
|[16](https://adventofcode.com/2020/day/16)|Ticket Translation|[py](/day16/main.py), [alt](/day16/alt.py)|
2121
|[17](https://adventofcode.com/2020/day/17)|Conway Cubes|[py](/day17/main.py)|
2222
|[18](https://adventofcode.com/2020/day/18)|Operation Order|[py](/day18/main.py)|
23-
|[19](https://adventofcode.com/2020/day/19)|Monster Messages|[py](/day19/main.py)|
23+
|[19](https://adventofcode.com/2020/day/19)|Monster Messages|[py](/day19/main.py), [alt](/day19/alt.py)|
2424
|[20](https://adventofcode.com/2020/day/20)|-|-|
2525
|[21](https://adventofcode.com/2020/day/21)|-|-|
2626
|[22](https://adventofcode.com/2020/day/22)|-|-|

day19/alt.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from lark import Lark, LarkError
2+
3+
def solve(rules, is_part1):
4+
if not is_part1:
5+
rules = rules.replace('8: 42', '8: 42 | 42 8')
6+
rules = rules.replace('11: 42 31', '11: 42 31 | 42 11 31')
7+
rules = rules.translate(str.maketrans('0123456789', 'abcdefghij'))
8+
parser = Lark(rules, start='a')
9+
10+
total = 0
11+
for line in lines.splitlines():
12+
try:
13+
parser.parse(line)
14+
total += 1
15+
except LarkError:
16+
pass
17+
18+
return total
19+
20+
with open("input.txt") as f:
21+
rules, lines = [l.rstrip("\n") for l in f.read().split("\n\n")]
22+
23+
for is_part1 in [True, False]:
24+
print(solve(rules, is_part1))

0 commit comments

Comments
 (0)