Cell Switch Maze

Objective: Find your way from the upper left arrow through the maze to the bottom right arrow.
Start: Mousing over the upper left arrow resets the maze.
Instructions: Guide your mouse through the maze (careful where you go). Each grid square has an on (white) and an off (black) state. Only move your mouse to adjacent "on" grid squares. When your mouse enters a grid square the square turns off. When your mouse enters a grid square, the grid square will switch the state of adjacent squares as indicated by the blue markers in the grid square (i.e. may have an up, down, left, or right blue marker). [With the "clickable version", you must click the grid square to indicate your move.]

Please wait until images are preloaded.

Currently selected mouse(click to unselect):(only one moves at a time)

Other mice(click to select):

Split mouse(click to activate):; Fuse mice(when 2 mice at same location):
Only 2 mice fit in a single square.

Start/reset arrow:; Goal/exit arrow: (all mice must reach)

"On" squares:

"Off" squares:

Always on square: ; Always off square:

Quick mazes

Basics walking (clickable version)
A simple starter 2X2 maze (clickable version) (solution)
Simple Walls (clickable version)
A less simple starter 7X3 maze (clickable version)(solution)
Switches 9X8 maze (clickble)
Loopy 9X8 maze (clickble)
More forthcoming.

A preset 10X10 maze (clickable version)
A preset 3X10 maze(clickable version)
A random 10X10 maze (clickable) (no guarantee that random mazes are solvable)
A random 20X20 maze (clickable) (reload to generate a new random maze)
A random 30X30 maze
Larger mazes possible, but browser load time degrades.

Custom mazes

Make a custom grid by passing in parameters.
Note the url takes parameters: rows, columns, clickable (vs. mouse over), grid square type, .
Grid type conversion: grid square value = up*1 + down*2 + left*4 + right*8; 0->a, 1->b, ..., 15->p
Rows:
Columns:
On Mouse Click
Result:
=a
=b
=c
=d
=e
=f
=g
=h
=i
=j
=k
=l
=m
=n
=o
=p
=x
=w

Solver for maze: Perhaps the difficulty in programming a solver is in the large amount of state (one bit for each cell + location of mouse) and that loops are difficult to detect since location looping is sometimes required to solve the maze. Perhaps one approach is to generate random walks or building partial solutions and then compare end results using some measure. For example, the number of squares covered to reach the destination.

Copyright Michael Moore 2006. concept and javascript code.
Edited Dec 20, 2006. Email to 1