When players are solving a problem, they usually choose the easiest the solution. However, there are many alternative solutions, which may help players have a better understanding of the problem. Therefore, I think the system should give users the options of solving a problem with a (randomly) designated solution. This function will also make sure all alternative solutions get played, so that potential mistakes will be exposed and discussed, and hopefully, fixed.

I wrote a little GoProblem exercise program, and I found it easy to implement this function in my program. To implement this function, the program only needs to (1) find all correct paths, (2) random choose a designated solution, (3) at each of player's turn, mark off all the positions that will lead to non-designated solutions (players cannot place their stones at these positions).