Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8c25495

Browse files
committedDec 19, 2024
feat: 2024 day 19
1 parent b8d8243 commit 8c25495

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed
 

‎2024/19a.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from aoc import *
2+
from functools import cache
3+
4+
5+
def main(infi: str):
6+
inp = filerstrip(infi)
7+
patterns, designs = inp.split('\n\n')
8+
patterns = set(patterns.split(', '))
9+
max_pattern = max(len(x) for x in patterns)
10+
11+
@cache
12+
def search(design):
13+
if not design:
14+
return True
15+
return any(
16+
search(design[i:])
17+
for i in range(1, min(len(design) + 1, max_pattern + 1))
18+
if design[:i] in patterns
19+
)
20+
21+
return sum(search(d) for d in designs.split('\n'))
22+
23+
24+
DAY = 19
25+
FILE_TEST = f"{DAY}_testa.txt"
26+
# FILE_TEST = f"{DAY}_testb.txt"
27+
FILE_EXP = f"{DAY}_exp.txt"
28+
FILE = f"{DAY}.txt"
29+
# test_and_submit(main, FILE_TEST, FILE_EXP, FILE, DAY)
30+
# print(main(FILE_TEST))
31+
print(main(FILE))

‎2024/19b.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from aoc import *
2+
from functools import cache
3+
4+
5+
def main(infi: str):
6+
inp = filerstrip(infi)
7+
patterns, designs = inp.split('\n\n')
8+
patterns = set(patterns.split(', '))
9+
max_pattern = max(len(x) for x in patterns)
10+
designs = designs.split('\n')
11+
12+
@cache
13+
def search(design):
14+
s = 0
15+
if not design:
16+
return 1
17+
return sum(
18+
search(design[i:])
19+
for i in range(1, min(len(design) + 1, max_pattern + 1))
20+
if design[:i] in patterns
21+
)
22+
23+
return sum(search(d) for d in designs)
24+
25+
26+
DAY = 19
27+
FILE_TEST = f"{DAY}_testa.txt"
28+
# FILE_TEST = f"{DAY}_testb.txt"
29+
FILE_EXP = f"{DAY}_exp.txt"
30+
FILE = f"{DAY}.txt"
31+
# test_and_submit(main, FILE_TEST, FILE_EXP, FILE, DAY)
32+
# print(main(FILE_TEST))
33+
print(main(FILE))

‎README.org

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Personal Stats 2024
55
| Day | Time | Rank | Score | Time | Rank | Score |
66
|-----+----------+------+-------+----------+-------+-------|
7+
| 19 | 01:44:22 | 6641 | 0 | 01:50:06 | 5444 | 0 |
78
| 17 | 00:27:08 | 1748 | 0 | 07:06:10 | 5688 | 0 |
89
| 15 | 00:32:17 | 2397 | 0 | 02:59:49 | 4379 | 0 |
910
| 14 | 00:19:09 | 1902 | 0 | 01:13:46 | 3551 | 0 |

0 commit comments

Comments
 (0)
Please sign in to comment.