Saturday, December 04, 2021

[tpywqclf] mazes with doors

let buttons in the maze control internal doors, closing or opening them.  this is a maze with state.

straightforward: only 1 button reachable initially.  pushing it opens a (probably distant) door making the next button accessible, and so forth.  pushing a "used" button again has no effect.  the last button opens a door making the exit accessible.  design the locations of the buttons so that one necessarily visits a large portion of the maze.

variations:

all buttons always accessible.  maze is always solvable no matter what the button state.  implement this by having the combined button state be the seed for a random (solvable) maze generator: pushing any button (probably) radically changes the maze.  perhaps goal is shortest solution.  or shortest solution that turns on all buttons.

a way to generate that doesn't radically change the maze for each button press: partially generate the maze with a fixed PRNG, then finish it off with a new PRNG seeded by button state.  how well this works depends heavily on the chosen maze-generating algorithm.  "doesn't radically change the maze" is subjective.

count the number of "on" buttons.  let this number be the seed for the maze generator.  it feels a little bit like a 3D maze with weird elevators: an elevator only goes one direction and a distance of one floor no matter what floor, but after being used, only goes the other direction.  maybe a weird stairwell or ladder.

partition the buttons into two sets (perhaps visually).  the tuple of the count of on buttons for each set is the seed for a maze generator.  one wanders a "meta" plane of mazes.  perhaps this meta plane is itself a maze with obstacles, so sometimes buttons cannot be pushed even if you reach them.

buttons are not optional.  being in a cell with a button automatically pushes or unpushes it.  it's more like a motion sensor than a button.  or, movement between two adjacent cells triggers the change in doors of the maze.  or, movement in a particular direction.  all of these result in mazes in which you can't easily go backward, though a UI could provide undo.

pushing a button flips the state (xor) of a set of doors associated with the button.

some of these will require effort to ensure that the maze is solvable.

No comments :