Spaces:
Running
Running
| file = "input.txt" | |
| def count_ways_to_construct(design, patterns): | |
| n = len(design) | |
| dp = [0] * (n + 1) | |
| dp[0] = 1 # Base case: one way to construct the empty string | |
| for i in range(1, n + 1): | |
| for pattern in patterns: | |
| if design.startswith(pattern, i - len(pattern)): | |
| dp[i] += dp[i - len(pattern)] | |
| return dp[n] | |
| def main(): | |
| with open(file, 'r') as f: | |
| lines = f.read().strip().split('\n') | |
| # First line is the available towel patterns | |
| patterns = lines[0].split(', ') | |
| # Remaining lines are the desired designs | |
| designs = lines[2:] # Skip the blank line after patterns | |
| total_ways = 0 | |
| for design in designs: | |
| total_ways += count_ways_to_construct(design, patterns) | |
| print(total_ways) | |
| main() |