advent-of-code/2024-python/output
Anders Englöf Ytterström ded5c4f28c Solve 2024:19 p1-2 "Linen Layout"
Initial tries to use a while loop instead of
recursion gave a classic AoC situation: test cases
worked, but not actual AoC puzzle input.

Turns out I only considererd removing the longest
pattern form the design, rather than consider all
possible removals.

Some Python goodies in here:

- `"abcdefgh".startswith("abc")` instead of regexp.
- removeprefix() is nice, and in some cases more
readable. `"abcdefgh".removeprefix("abc")` vs
`"abcdefgh[3:]"
- To speed things up for pt 2, functools is used
which requires a dict to be hashed as a tuple.

If one wish to solve this without recursion, a
BFS solution is most likely the way to go.

def ispossible(design, patterns):
    Q = [design]
    possible = 0
    while Q:
        remaining = Q.pop(0)
        if not remaining:
            possible += 1
            continue
        for pattern in patterns[remaining[0]]:
            if remaining.startswith(pattern):
                Q.append(remaining.removeprefix(pattern))
    return possible
2025-01-05 00:06:18 +01:00
..
__init__.py Solve 2024:16 pt1 "Reindeer Maze" 2025-01-05 00:06:18 +01:00
day_01.py Solve 2024:1 p1-2 "Historian Hysteria" 2025-01-05 00:06:18 +01:00
day_02.py Solve 2024:2 p1-2 "Red-Nosed Reports" 2025-01-05 00:06:18 +01:00
day_03.py Solve 2024:3 p1-2 "Mull It Over" 2025-01-05 00:06:18 +01:00
day_04.py Solve 2024:4 p1-2 "Ceres Search" 2025-01-05 00:06:18 +01:00
day_05.py Solve 2024:5 p1-2 "Print Queue" 2025-01-05 00:06:18 +01:00
day_06.py Solve 2024:6 p1-2 "Guard Gallivant" 2025-01-05 00:06:18 +01:00
day_07.py Solve 2024:7 p1-2 "Bridge Repair" 2025-01-05 00:06:18 +01:00
day_08.py Solve 2024:8 p1-2 "Resonant Collinearity" 2025-01-05 00:06:18 +01:00
day_09.py Solve 2024:9 p1-2 "Disk Fragmenter" 2025-01-05 00:06:18 +01:00
day_10.py Solve 2024:10 p1-2 "Hoof It" 2025-01-05 00:06:18 +01:00
day_11.py Solve 2024:11 p1-2 "Plutonian Pebbles" 2025-01-05 00:06:18 +01:00
day_12.py Solve 2024:12 p2 "Garden Groups" 2025-01-05 00:06:18 +01:00
day_13.py Solve 2024:13 p1-2 "Claw Contraption" 2025-01-05 00:06:18 +01:00
day_14.py Solve 2024:14 p1-2 "Restroom Redoubt" 2025-01-05 00:06:18 +01:00
day_15.py Refactor 2024:15 2025-01-05 00:06:18 +01:00
day_16.py Solve 2024:16 pt2 "Reindeer Maze" 2025-01-05 00:06:18 +01:00
day_18.py Solve 2024:18 p1-2 "RAM Run" 2025-01-05 00:06:18 +01:00
day_19.py Solve 2024:19 p1-2 "Linen Layout" 2025-01-05 00:06:18 +01:00