Skip to content

Commit d981f9d

Browse files
committed
[2024/19] p1 rewritten without re (prep for p2)
1 parent 82df799 commit d981f9d

File tree

1 file changed

+7
-14
lines changed

1 file changed

+7
-14
lines changed

2024/19/script.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,22 @@
11
from GhostyUtils import aoc
22
from functools import cache
3-
import re
43

54

6-
"""
75
@cache
86
def validate(design: str, patterns: frozenset[str]) -> bool:
9-
107
if design in patterns:
11-
if aoc.args.verbose or aoc.args.progress:
12-
print(f"{design} - found")
138
return True
149
else:
1510
# try all splits
1611
valid = False
17-
for i in range(1, len(design)-1):
12+
for i in range(1, len(design)):
13+
if aoc.args.verbose:
14+
print(f" trying {design[:i]}-{design[i:]}")
1815
valid = validate(design[:i], patterns) and validate(design[i:], patterns)
1916
if valid:
20-
break
21-
return valid
17+
return True
2218

2319
return False
24-
"""
25-
26-
27-
def validate(design: str, patterns: frozenset[str]) -> bool:
28-
pattern = re.compile(r"^(" + r'|'.join(patterns) + r")+$")
29-
return re.match(pattern, design)
3020

3121

3222
def main():
@@ -44,6 +34,9 @@ def main():
4434
if aoc.args.verbose or aoc.args.progress:
4535
print(f"0 - {design}")
4636

37+
if aoc.args.progress:
38+
print(f"cache: {validate.cache_info().hits} hits, {validate.cache_info().misses} misses")
39+
4740
print(f"p1: {valid}")
4841

4942

0 commit comments

Comments
 (0)