Adicionar um dígito (0-9) à sequência / string cria novo número de 4 dígitos

Eu estou tentando encontrar um algoritmo que "quebra o seguro", digitando as teclas 0-9. O código tem 4 dígitos. O cofre será aberto onde identifica o código como substring da digitação. ou seja, se o código for "3456", a próxima digitação abrirá o seguro: "123456". (Significa apenas que o cofre não está reiniciando a cada 4 chaves de entrada).

Existe um algoritmo que toda vez que ele adiciona um dígito à seqüência, ele cria um novo número de 4 dígitos (novas combinações dos últimos 4 dígitos da seqüência \ string)?

obrigado, km.

Edição (publiquei anos atrás): A questão é como ter certeza de que toda vez que eu definir uma entrada (um dígito) para o cofre, eu gero um novo código de 4 dígitos que não foi gerado antes. Por exemplo, se o cofre obtiver um código binário com 3 dígitos, esta deverá ser a minha sequência de entrada:

0001011100 

Porque para cada entrada recebo um novo código (3 dígitos) que não foi gerado antes:

000 -> 000
1 -> 001
0 -> 010
1 -> 101
1 -> 011
1 -> 111
0 -> 110
0 -> 100

questionAnswers(3)

yourAnswerToTheQuestion