BURR6 Program BCPI logo billcutlerpuzzles.com

Contents
previous: General Comments next: What should 'Level' be?

Bill Cutler Puzzles, Inc. The BURR6 program has two main sections. The first section determines how many assemblies, or `legal configurations' can be formed with the six pieces in the design. The second section takes each of these assemblies and tries to disassemble them using `rectilinear' movements, as described above.

The general method for the assembly section is as follows:

  1. Each of the six pieces is rotated and flipped end-for-end to determine how many different cube configurations result. The piece is checked for symmetry and duplication with previous pieces examined. These results appear on the printout.
  2. A non-symmetric piece without duplicates is chosen. This is marked as the `fixed' piece. If no such piece exists, a warning that duplicate assemblies may be produced is printed. This piece is placed first, and its end-for-end flips are not used.
  3. The completion of the assembly with the other five pieces is done using a straightforward approach with ten nested loops.

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.

Options Available in the BURR6 Program

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.

Runtimes

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)
Design
Name
Matrix
Size
Piece
Length
External
Holes
(#Asmbly, #Soln) Assembly Disassembly Total
BBB 10 6 no (24, 1) 3 14 17
BBB 14 6 no (24,1) 3 28 31
BBB 10 6 yes (66,5) 67 37 104
BBB 14 6 yes (66,5) 67 81 148
Mar-B 10 6 no (10,1) 1 10 11
Mar-B 14 6 no (10,1) 1 19 20
Mourik 12 6 no (31,30) 3 57 60
Mourik 12 8 no (31,25) 3 56 59
Love B-5 12 8 no (508,27) 6 424 430

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

Contents
previous: General Comments next: What should 'Level' be?
  Home Six Piece Burrs Box-Filling Puzzles Booklets  
About our Puzzles Rectilinear Burrs Miscellaneous Puzzles References
How to Order Non-Rectilinear Burrs Computer Programs Other Websites

Copyright 2000-2002 Bill Cutler Puzzles, Inc.