I can give you an approach to the problem.
Picture an empty board with only one lit square. Solve the board and record the solution as a 5x7 matrix of ones and zeroes. One means a tile was pressed, zero means it was not.
Again, picture the board empty but for a different single lit square. Solve the board and record the solution as a matrix. Do this 33 more times. That is, create a matrix solution of ones and zeroes for each single square on the board. There is a lot of symmetry here, so you're not really required to do this 35 times. For example, the corner solutions are the same, but rotated. If you're clever, you can generate these single tile solutions programatically, but it's just as effective to do it by hand.
Now, see your pictured puzzle, with 16 lit tiles. The solution is just the sum of the solutions for those individual lit tiles. So you'll be choosing sixteen of your precalculated solutions and adding them up. You'll wind up with a 5x7 matrix of numbers ranging (in this case) from 0 to 16. If a particular tile is clicked for every one of those individual solutions, it'll be a 16. If it's clicked in only 5 of those solutions, it'll be a 5.
Note that two clicks on any tile (on, then off again) maintains the same state. So any odd number in your solution matrix becomes a 1, and any even number becomes a 0. To solve your puzzle, click the ones.
In short, any puzzle can be solved by superimposing the solutions for individual tiles.
edit:
Heh. I'm working on the assumption that solutions exist for each of the 35 singletile puzzles. I wonder if that is true! Let me know if you try it. If not, superimposing solutions still works, but some of your precalculated solutions will have to be small groups (two or three lit tiles) rather than singles, and there will be a few more of them.
Last edited by fiddleback; 02072018 at 09:17 PM.
