First, for those unfamiliar with the game, this is how the game works,
The goal of the game is to turn off all the lights, hence called "Lights Out", and each press of the button/light inverses its state as well as its north/south/east/west adjacent neighbors, and that's pretty much it.
Now, what I could think of is by using SR flip-flops, or JK flip flops. This is due to its ability to act as storage element (the initial state and next state). But I can't seem to think of ways to actually implement them.
Another idea is that each set of button and its adjacent (NSEW)button/lights will have its own truth table, like this:
but, is it possible to have the input variables be the same as the output variables? Are there any other ways to do this?