We begin by discussing the encoding process.
The interested reader may want to construct a model dodecahedron, for which purpose we provide a template.
The idea for this process originally struck this author as a result of a certain numerical coincidence. The number of faces on a dodecahedron is twelve, this is also the dimension (and half of the length) of the Golay code. If we wanted to use a dodecahedron to encode the Golay code, clearly the faces will have to pull double duty -- that is, there will have to be two bits on each face. It seems reasonable to distinguish these symbols, one will be called an information symbol, the other a parity check symbol. (An explanation of this terminology). This nomenclature is intended to match intuition. Each Golay codeword encodes 12 bits of information, the remaining 12 bits (the parity check positions) are computed from the first 12. Thus we have 12 bits worth of information, and 12 bits of redundancy in each Golay codeword.
How shall we compute the parity positions from the information positions? Clearly, we want to use the geometry of the dodecahedron. Also, we want the minimum weight of the resulting words to be at least 8. Consider encoding a word where the information positions contain only a single one. To ensure that the encoded word has the required weight, we will have to have 7 ones among the parity symbols. Given this constraint, the answer almost jumps out at us. On the dodecahedron there are 5 faces adjacent to a given face, 5 faces that are distance two, and a single face that is opposite it. Counting the original face as being distance 0 from itself, we have 1,5,5,1 as the number of faces at distances (respectively) 0,1,2,3 from a given face. How do we get 7 as a sum of these numbers? Obviously just eliminate one of the 5's. This is the genesis of the mask which is used in encoding (also later in decoding).
Consider a model dodecahedron on which one can write. The encoding process goes as follows:
There is a characterization of the Golay code, given in the excellent book by MacWilliams and Sloane [MS], as having a generator matrix of the form [I | J-A], where I is a 12x12 identity matrix, J is the 12x12 matrix having all 1's in it, and A is the adjacency matrix of the face graph of the dodecahedron. That is, A is indexed by the faces of the dodecahedron, and there is a 1 in A at position i,j, if the ith and jth faces share an edge.
Notice that this generator matrix corresponds precisely to the physical process we have described in the encoding algorithm, so the fact that this algorithm does indeed encode the Golay code is established.
We present a small example to make the encoding procedure concrete.
Consider encoding the 12-bit string (100000000000). Upon writing these symbols on the (numbered) faces of a dodecahedron, we have:
As we move the mask around to the various faces of the dodecahedron, we will evidently have odd parity in the exposed information symbols except when the mask covers our single bit of information.
The encoded word is:
which can be reinterpreted as the string of bits: (100000000000100000111111).