MindSweeper is yet another incarnation of the classic minesweeper puzzle, everybody's favourite waste of CPU cycles. MindSweeper includes a solver that plays along with you to tell you if you can move without guessing. Or just let it play for you!
The solver in this game uses a "brute force" approach. It begins by identifying all of the unmarked cells for which information is available and then systematically tests each possible arrangement of flags in those cells searching for flag arrangements that are consistent with all available information. As the search procedes, for each cell a count is kept of the number of valid arrangements in which it was flagged. When the search terminates, the ratio of this number to the total number of valid arrangements gives the probability of finding a mine in that cell. If this ratio is 0 then the cell can be cleared with certainty, if the ratio is 1.0 then it can be flagged with certainty.
Here are some key features of "Mindsweeper":
· Unlimited board size (limited by screen size).
· Adjustable cell size.
· Four preset difficulty levels.
· Option to analyze the game board in real-time to see if a move can be made without guessing.
· Option to display the probability of finding a mine in each cell based on the information available.
· Option to "autoplay" the game: to automatically make any moves that can be made without guessing.
· Option to autoplay a specified number of games and record the percentage that could be completed without guessing, thereby measuring the "playability" of a given board size and mine density.
What's New in This Release:
· Renamed autoplay.* to solver.*.
· Began spliting the solver into a front-end and generic back-end.
· Extensive elimination and re-organization of global variables.
· Found and fixed a bug in the solver: it was not able to correctly identify situations in which all non-border sites can be flagged. Recomputed layability of Advanced level to confirm the numbers in the README file.
· Replaced some linked lists in the solver with arrays. This will lead the way to an in-place arrangement analyzer (as opposed to the recursive implementation currently being used).
· Disabled -g and -l command line options if diagnostics mode not enabled.
· Reworked the "quick move" implementation in the solver. Now possible mine sites are found first and the quick move analyzer processes only them. This avoids scanning the entire board for cells twice in the event the quick move algorithm fails.
· Converted the quick move algorithm into a list optimizing algorithm. The idea is to move cells that can be decided based on their immediate neighbours to the front of each list of cells.
· This prevents them from being tested over and over again and so speeds up full arrangement analysis mode but slows down full board analysis
· Solver now computes mine probabilities for nonborder cells.
· "Perform board analysis" must now be selected in order to select "Autoplay".
· Fixed an off-by-one bug in the minefield widget's clipping code that was causing random segfaults.