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
- 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.
- 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.
- 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.