Analytic Zome

This page describes the approach taken to solve the Petersen Graph Zome Challenge from the prizes page of If you are more visually inclined, you might want to start with theVirtual Zome Petersen Graphs

I didn't feel like searching for the solution by hand (given that it might be impossible) so I decided to create a computer program to search for any and all solutions. To do this, I first needed some way of representing a Zome ball positioned in space as well as some nomenclature for describing the various directions taken from a Zome ball.

Zome Axes

The Zome coordinate system I used is a typical three dimensional (x,y,z) space with a Zome ball at the origin and three mutually perpindicular blue stuts (i.e. the corner of a cube) being the positive axes. Here is a picture of the origin and the positive axes as viewed from the from the first octant. (Note that the images here are taken by placing actual Zome pieces on the glass of my scanner and then editing the scanned image.)

The positive x axis is pointing to the lower left, the positive y axis is pointing to the lower right and the positive z axis is pointing up. Note that the wider side of the strut lying on the positive x axis is parallel to the xy plane, the wider side of the y axis lies in the yz plane, and the wider side of the z axis lies in the xz plane. This is an arbitrary decision (alternatives are equally valid), but the decision is significant because the nomenclature and computer program rely on this particular orientation.

Zome Coordinates

Next, I needed a way to represent the coordinates of Zome balls in this space. I started with blue struts of the same length since that is all that the original problem required. Using 1 as the blue strut length, the coordinates of the Zome balls at the ends of the six axes struts are obviously (+/-1, 0, 0), (0, +/-1, 0), and (0, 0, +/-1). The coordinates of the remaining 24 neighboring balls are not so obvious. As you can see from the above picture, there are three blue (i.e. rectangular) holes in octant 1. In fact, there are three blue holes in each of the eight octants (3*8=24). Due to the symetry of the Zome ball, finding the coordinates of any one of these 24 balls will give us the coordinates of the other 23 balls (thanks to rotation and reflection). I chose to start with the blue hole in octant one that shares a corner with the positive x axis. I used a b3 strut as the positive x axis, a b1 strut as the positive y axis, and a b2 strut as the positive z axis. I then placed a b2 strut in the blue hole in octant 1 next to the x axis. Connecting b2 struts between the ball at the end of the octant 1 strut and the balls at then ends of the three axial struts results in the structure shown in the two images shown here.

The upper image is essentially a projection of the structure onto the xy plane. The lower image is a projection onto the xz plane. If T is the ratio of successive lengths of blue struts and b2 is taken to have a length of 1, then it is apparent from this structure that the coordintes of the fourth ball are:

( T/2, 1/(2T), 1/2 )

These three values and their negatives can be used in different permutations to express the coordinates of all balls that are at the ends of non-axial blue struts with length 1.

One interesting thing about these numbers (including the coordinates of the axial balls) is that they can all be expressed as:

(a+bT)/2, where a and b are integers

It turns out that this expression can be used to represent the coordinates of any ball that is connected (or connectable) to the origin using any combination of struts of any length (including green struts in any orientation, but not blue green struts). Using 2-tuples of integers to represent coordinates is ideal for computer programs because...

  1. It eliminates rounding errors that can accumulate when performing floating point math on digital computers.
  2. Integer math is faster than floating point math.

Zome Nomenclature

Now that the coordinates of neighboring Zome balls can be determined, I needed a nomenclature to describe the different directions that can be taken from a Zome ball. Every Zome ball has 62 holes. The first way to differentiate the holes is by the color of the strut that fits into the hole: blue, yellow, or red. Since yellow starts with a "y" and y is also used to describe a ball's coordinates (as in "(x,y,z)"), I decided that it would reduce confusion if I referred to struts of that color as "amber struts" instead of "yellow struts". Here is a breakdown of the Zome ball's holes:

Color Number per axis/octant Number of axes/octants Total
Blue 2 per axis 3 axes 6
3 per octant 8 octants 24
Amber 4 per axis 3 axes 12
1 per octant 8 octants 8
Red 4 per axis 3 axes 12
Grand Total 62

Further examination of a Zome ball reveals that each hole (except for 8 amber holes) is adjacent to an axis or is itself an axis. I wanted the nomenclature to be as compact as possible, yet still be readable by humans. After considering several possibilities, I finally decided on using the following three components to refer to a Zome ball hole: its color, the axis to which it is adjacent, and the octant in which it lies. Using one character for each component provides a three character "name" for each hole. The characters I used for each component are shown in the following table.

Component Value Symbol Comment
Color Blue b  
Amber a aka Yellow
Red r  
Axis x x  
y y  
z z  
N/A o This is for the amber holes that are centered in each octant.
Octant 1-8 1-8 The numbers 1 through 8 are used for the 8 octants.
+ + This is used for the positive axes.
- - This is used for the negative axes.

This nomenclature has some ambiguities. For example, the amber hole directly "above" the positive x axis lies in the xz plane and is not really in either octant 1 or octant 4. These ambiguities are resolved by the following convention: if a hole lies in the xy, yz, or xz plane, its zero coordinate is considered to by positive for the purposes of determining its octant unless the hole opposite it has already been assigned an octant. In that case, the hole is assigned the octant opposite the opposite hole's octant. Octants are assigned to holes starting with those in or around octant 1 and ending with those in or around octant 8. Some examples will probably clear up any confusion you may have...

The three positive axes are referred to as bx+, by+, and bz+. The hole that was used above to determine the non-axial coordinates was hole bx1. The amber hole directly above the x axis is called ax1, the amber hole directly above the negative x axis is called ax2, the amber hole directly below the negative x axis is ax7, and the amber hole directly below the positive x axis is called ax8. The amber hole that is in the "center" of octant 1 is called ao1 (think "o for other" or "o for octant"). Here are the names of all 62 holes:

Positive Axes: bx+ by+ bz+
Octant I: bx1 by1 bz1 ax1 ay1 az1 ao1 rx1 ry1 rz1
Octant II: bx2 by2 bz2 ax2 ay2 ao2 rx2 rz2
Octant III: bx3 by3 bz3 ao3
Octant IV: bx4 by4 bz4 az4 ao4 ry4
Negative Axes: bx- by- bz-
Octant V: bx5 by5 bz5 ao5
Octant VI: bx6 by6 bz6 az6 ao6 ry6
Octant VII: bx7 by7 bz7 ax7 ay7 az7 ao7 rx7 ry7 rz7
Octant VIII: bx8 by8 bz8 ax8 ay8 ao8 rx8 az8

Representing Zome Constructions

If all of the struts of a Zome construction have the same length, then the hole names are adequate to describe the neighboring Zome balls. If the struts have different lengths, then a size indicator (1, 2, 3) can be added after the color letter to indicate the length of the strut placed in that hole. A series of such names can be used to specify a particular arrangement of Zome balls and struts. For example, a square can be represented as bx+, by+, bx-, by-. An equilateral triangle can be represented as bx+, by2, by7.

The Zome construction used above to determine the coordinates of non-axial blue balls can be described as:

b3x+, b2x2, b2x7, b2z+, b2x8, b2x6, b1y-

On to the Petersen Graph...

Having established a coordinate system and a means of representing Zome constructions, it is now time to move on to actually solving the Petersen Graph Zome Challenge.

Copyright © 2001 Smart Software Consulting