Files
AdventOfCode2024/19/19-1-1.py
2024-12-19 14:34:40 +01:00

48 lines
1.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from functools import lru_cache
file = "./input.txt"
#file = "./ex.txt"
#file = "./input-e.txt"
from time import time
start_time = time()
def read_input(input_file:str, ) -> tuple[list[str], list[str]]:
a = []
d = []
f = open(input_file, "r")
for line in f:
line = line.strip()
if line == "":
continue
elif "," in line:
a = line.replace(" ","").split(",")
else:
d.append(line)
f.close()
return a, d
@lru_cache(maxsize=None)
def check_design(txt: str) -> bool:
global alphabet
if txt == "":
return True
for substring in alphabet:
if txt.startswith(substring):
remaining = txt[len(substring):]
if check_design(remaining):
return True
return False
if __name__ == "__main__":
alphabet, designs = read_input(file)
sol = 0
for i, design in enumerate(designs):
#print(i, design)
if check_design(design):
sol += 1
print(sol)
print(f'Runtime: {time()-start_time:.8f} s')