The Voyager 1 and 2 spacecraft sent back hundreds of color pictures as they flew by Jupiter and Saturn. But they could only transmit 14 kilobytes per second! So they used a highly efficient error-correcting code: the Golay code.
This is a 24-bit code. The first 12 bits convey the message, and the rest are computed from those. Up to 3 of the 24 bits can be wrong and you can still figure out what was intended! Up to 7 can be wrong and you can still know there was an error!
This image by @gregeganSF shows how it works. This shape, an icosahedron, has 12 vertices. There are also 12 pentagons inside this shape. Your first 12 bits say which pentagons to light up. 0 means "leave it dark" and 1 means "light it up". Your second 12 bits say which vertices to light up.
The second 12 bits are computed from the first 12 using this trick:
If you light up a single pentagon, then you only light up the vertices that don't contain that pentagon! What if you light up a bunch of pentagons? Then you use addition mod 2. You work out which vertices get lit up for each pentagon you light up. You think of those results as 12-bit strings. Then you add them up mod 2.
The last part may sound complicated, but it's a common trick, called a "linear code". What's special about the Golay code is its connection to the icosahedron. This gives it remarkable features, which I explain here:
https://blogs.ams.org/visualinsight/2015/12/01/golay-code/
I need to learn more about the other codes used by the Voyagers!
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.