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.