Is it possible to create an error correcting code (linear or non linear) that is capable of handling a single skipped or duplicated bit?
So lets assume that I transmit the code 1101 then the possible codes which could be received are:
1101, //No error
101, 101, 111, 111, //Skipped bit
11101, 11101, 11001, 11011 // Duplicated bit
EDIT - clarifications:
1) The code also needs to handle at least 1 randomly flipped bit. The flipping is guaranteed to happen before the skip/duplicate.
2) The bits come in as a stream and there is no synchronization signalling the start or end of a codeword. However there is one significant advantage: the codeword being sent is repeated infinitely. eg. 1110111101111011011101 ... (3x duplicated, 1x skipped, 1x no error)
3) So another way to ask the question is: given the kind of noise attacks referred to above what is the minimal number of bits I would need to receive for a code of rank k before I can gaurantee detection of the code and how would it be encoded?
After considerable research on the topic it seems that the best reference for answering the posted question is "Codes for Correcting Insertion and Deletion Errors" by Patrick A. H. Bours.
The basic idea is to create a Comma Free Code with some minimal Levenshtein distance.