Spaces:
Running
Running
| def solve(): | |
| with open("./input.txt") as f: | |
| lines = f.readlines() | |
| patterns = lines[0].strip().split(", ") | |
| designs = [line.strip() for line in lines[2:]] | |
| def can_make_design(design, available_patterns): | |
| if not design: | |
| return True | |
| for pattern in available_patterns: | |
| if design.startswith(pattern): | |
| if can_make_design(design[len(pattern):], available_patterns): | |
| return True | |
| return False | |
| def count_arrangements(design, available_patterns): | |
| if not design: | |
| return 1 | |
| count = 0 | |
| for pattern in available_patterns: | |
| if design.startswith(pattern): | |
| count += count_arrangements(design[len(pattern):], available_patterns) | |
| return count | |
| possible_designs = 0 | |
| total_arrangements = 0 | |
| for design in designs: | |
| if can_make_design(design, patterns): | |
| possible_designs += 1 | |
| total_arrangements += count_arrangements(design, patterns) | |
| print(possible_designs) | |
| print(total_arrangements) | |
| solve() |