I saw this somewhere on the internet once, and I was not very good at solving it, but I always have a love-hate relationship with puzzles that I'm not good at. Eventually I lost the link to the original, but I knew it would bother me if I never got to play it again, so I put it together here. Even after making it myself and studying how it works, I'm still tragically bad at this puzzle, but I take comfort in the fact that the way that I coded it makes it always solvable.