Error Correcting codes anyone?

So I am quite into memory competitions and all that. And in those cases, one does the memorization and then has time for review. So as a computer science student I have been thinking about the possibility of adding error correcting codes to allow for some errors.
So what is an error correcting code? Typically it is a number that is usually appended to messages when you for instance send it over any channel that might make some error. The point then is that you can reconstruct the message by using the error correcting code. To make this more concrete consider remembering a series of binary numbers and also remembering if there was an even or odd number of ones. If you then forget one of the binary digits you would by looking at your error correcting code be able to deduce what it was that you forgot. This is just an example, and one could construct more advanced error correcting codes to be able to reconstruct multiple lost digits.

In short competitions I think that it probably takes to much effort to construct the codes. Although speed cards does already have an inherent error correcting code since you can forget one card and still reconstruct the order. This is because you remember the cards and not the permutation of the deck.
However, in some longer competitions I think that it might be useful and so will be experimenting more with this.

In the meantime I basically wonder if first of all anyone uses or heard about anyone who does use any such method? And secondly if you have any thoughts on how this could be done, or if it could be done, efficiently?

1 Like

I think most do that, in a way.

To use your example, there is a set number of binary digits per line. So you would know that, e.g., every 5th loci is a new line.

That could maybe be viewed as something similar, but what I was more after is something that can be used to actually not only note that I have reached the end of the line but missing digits, but also reconstructing those digits.
In the case of binary digits which may be the most suitable discipline for this it might be very useful to remember if every column had an even or odd number of ones (called parity). This way I would be able to reconstruct any digit from any row as long as I have not forgotten multiple digits from different rows of the same column. The reason one would choose to construct columnwise is simply that one would normally forget multiple consecutive digits in a row if one forgets a peg.
The whole point would be that to remember if every column had an even or odd number of ones would only amount to remembering an extra row which is certainly preferable to remembering everything twice.

The best thing here is probably low density parity check codes. They only require a few XOR operations per input bit in order to get good correction, and the cost is amortized over the whole remembering time. Also they are basically at the shannon limit :stuck_out_tongue: