Skip to content

Exhaustive

Exhaustive AOD grid enumeration move generator.

ExhaustiveMoveGenerator dataclass

ExhaustiveMoveGenerator(
    max_x_capacity: int | None = None,
    max_y_capacity: int | None = None,
)

Enumerates all valid AOD grids from the configuration.

For each (move_type, bus_id, direction) group, finds all source positions, enumerates grid subsets within AOD capacity, and yields the full grid of lane addresses.

Pre-filters grids where an occupied source has an occupied destination (collision) as an optimization.

NOTE for Rust port: replace itertools.combinations with Gosper's hack for bitmask enumeration of exactly-k-set-bits subsets. This avoids iterating all 2^n masks when capacity is small. See #298.

max_x_capacity class-attribute instance-attribute

max_x_capacity: int | None = None

Maximum number of unique X positions the AOD can address.

max_y_capacity class-attribute instance-attribute

max_y_capacity: int | None = None

Maximum number of unique Y positions the AOD can address.