The general method for the assembly section is as follows:
The disassembly section will not be explained in any more detail. The listing of `states,' which appears on some of the output, gives insight into the fundamental logical process in this section. The disassembly portion can be used on much larger and more complicated burrs. It has run successfully on Van der Pol's 18-piece puzzle, for example.
Analysis Matrix Size - this is the size of the grid that must hold the assembled burr and any states that may be reached in the process of disassembling the burr. When each new state is analyzed to determine new motion, the pieces are repositioned in this matrix. If this matrix is not large enough, so that some pieces extend beyond the edges, the resulting analysis may contain incorrect movements. The allowable values for matrix size are even numbers from 10 to 14. This will be increased to at least 20, but the runtime for some of the disassembly routines increases as the cube of the matrix size. (See runtimes below.)
Length of Pieces - the pieces may be of length six or eight. There may be some reason to increase this to ten or more. See Challenge Questions.
External Holes - if external holes are allowed, then pieces may be rotated so as to bring their cube holes into places that may not intersect other pieces, and are visible to the outside. Such constructions are usually not allowed. This analysis is allowed as an option to see how many such solutions would be discovered by people who would attempt this type of construction. A sample output with Bill's Baffling Burr and such a solution is included.
Details and Pictures - the pictures (cross-sections of assemblies) and details of the disassembly steps can be shown for (a) all assemblies, (b) only those assemblies that are solutions (See output on `Impossible Second Move' for its limitations), or (c) no assemblies.
Subassembly Details - if desired, the program can print out pictures and details for the subassemblies that must also be disassembled. The program always goes through the subassembly analysis, but will only produce output if this option is selected.
List of States - if desired, the program will print out a list of all states discovered when it has either found a solution or has completed analysis of all movement without finding a solution. Analysis of this listing (included for a few designs in the output section) reveals the logical method which is fundamental to the disassembly portion of the program.
Following are some sample runtimes on an IBM PC AT. The program is written entirely in FORTRAN using all 16-bit integer variables and was compiled using the Microsoft compiler (IBM's marketed version). The operating system is DOS. The computer does not have an 80287 math coprocessor chip, but this is irrelevant as there are no floating point variables in the program.
| || || || || ||Runtimes(seconds)|
** For comparison with mainframe times: The same program was compiled for running on IBM mainframes with VS Fortran Optimize(3) using 32-bit integers. The program ran for 4.13 CPU on an IBM 8083, Model J, when running BBB with external holes and matrix size 14. This was about 36 times faster than the run on the IBM PC AT.