In order to make the solver run, a problem must be selected first. A
list of all previously defined problems is available right below the*
Parameters* caption. Selecting problems to be solved is similar
to selecting shapes, colours, or problems on the other tabs. Note that
only the selected problem will be solved, and that solving one problem
will preserve the results of any already solved or partially solved
problem. Currently there are the following options for the solver. All
deal with the kind of information the solver will report.

**Solve Disassembly**- When checked, the solver will try to disassemble any assemblies
found, and only those that indeed can be disassembled will be added to
the list of solutions. If this option is left unchecked, the solver
will merely search for all
*theoretically*possible assemblies, i.e. assemblies for which the pieces do not overlap. Since solving disassemblies takes time (and often far more than assembling), it's recommended to leave this option unchecked for puzzles that always can be disassembled (e.g. PENTOMINO problems and other packing problems). For that kind of puzzles, running the disassembler would only slow down the process without any gain in information. **Just Count**- When checked, the solver will only count the number of solutions; it will drop the solutions right after they are found. Check this option if you're interested only in the number of solutions and not in the solutions themselves.
**Drop Disassm**- When checked, the program functions the same as with
*Solve Disassembly*enabled, except that the disassembly is*not*stored, only the assemblies and some information*about*the disassemblies (like their level). This is useful if you have a problem that has many solutions and you want to find the most interesting solutions. Disassemblies take up a lot of memory within the computer so it is useful to just save some information while solving the puzzle and then later on, when everything is finished, recalculate the disassemblies for the interesting solutions. **Keep Mirror Solutions**- When this box is checked, the program will not remove mirror
solutions. Two solutions are mirror solutions are solutions when one
solution is a real mirror of the other. This can happen only, when
either all pieces are self mirroring (note that all flat pieces are
self mirroring) or they have a mirror pair in the piece set. Sometimes
it is possible to create the mirror solution by flipping the solution
over. These are
*not*mirror solutions to BURRTOOLS and are still removed. This option is useful when using piece ranges, as the mirror removal would remove too many solutions, like solutions with different piece sets. **Keep Rotated Solutions**- When this box is checked, the program will not exclude solutions
that are only rotations of other solutions. So the final solution count
will be wrong. It will even be completely unpredictable somewhere in
the range of the right number of solutions and a 120 fold of that value
(for spheres). This option is useful if you just want to know if there
are any solutions
*at all*. **Expensive rotation check**- When this box is checked, BURRTOOLS will do a more thorough but also more CPU time consuming check for double solutions. The basic idea behind it is explained in the chapter about Rotation Removal. A use of this switch is explained in the piece generation example
**Sort by**- This option lets you choose the order in which the solutions are presented while the solver runs. There are 3 possibilities:
- unsorted: The solutions are sorted in the order in which they were found.
- by level: The solutions are sorted by the level. First by the number of moves to remove the first piece, if that is identical then by the moves for the second piece, and so on.
- by number of moves to disassemble: The solutions are sorted by the sum of all moves required to completely disassemble the puzzle.

**Drop**- If a puzzle has very many solutions, it might not be necessary or even possible to save all of them. E.g for polyomino-like puzzles it might be nice to keep just every 1000th of the millions of solutions, so as to have a profile of the possible solutions. Here you can specify every how many-th solution you want to keep. A 1 means you keep every solution, a 100 means you keep the first and the 101st and the 201st and so on.
**Limit**- Limits the number of solutions to be saved. There will never be more than the specified number of solutions in the list. When the list is full the program has 2 choices:
- Solutions are sorted: The programs throws away the solutions at the end. So low level solutions are removed.
- Solutions are unsorted: The program starts to throw away every 2nd solution. So if you started with a drop-value of one and the list is full, the program starts to drop every 2nd solution it finds, and only adds every 2nd solution to the list. But for each added solution it also removes every 2nd solution that was already added to the list. After a while the list contains only every 2nd solution — then the program only adds every 4th solution and removes again every 2nd solution that had been on the list, and so on. This sounds complicated but what is does is ensure you have an nice cross-section of all the solutions, and not just the first or last N found.

Contents Previous Next