day12 package

Subpackages

Submodules

day12.day12 module

day12 solution.

class day12.day12.SpringLine(items: str, broken_springs: list[int])[source]

Bases: object

Springline class.

big_cache: dict[State, int]
broken_springs: list[int]
calculate() int[source]

Brute force with backtracking lets go…

calculate_recursive(state: State) int[source]

Recursive with memoization.

  1. memoized

  2. state.empty -> return if we are valid

  3. state[0] == “.” chop it and continue

  4. state[0] == “#”. get next number, and “enforce” it, chopping things. If anything is wrong, fail

items: str
set_and_return(state: State, value: int) int[source]

Sets and returns in one line.

unfold() SpringLine[source]

Makes it 5x bigger (part2).

class day12.day12.State(items: str, broken_springs: list[int])[source]

Bases: object

Thes tate of a spring.

broken_springs: list[int]
items: str
valid() int[source]

Returns true IFF we are completed without errors.

day12.day12.calculate_sum(spring_lines: list[SpringLine]) int[source]

Calculates every spring line and then adds the totals.

day12.day12.get_input(path: str) list[SpringLine][source]

Returns list of SpringLines from input file.

day12.day12.main() None[source]

Main function.

Module contents

day12 solution.