Escreva um programa que passa por uma sequência de caracteres não-espaço em branco (você pode assumir que eles são dígitos 0
para 9
, mas nada na forma como eles devem ser processados depende deste) e adiciona espaços de acordo com as seguintes regras.
- Deixe que o token atual seja a sequência vazia e os tokens emitidos anteriormente sejam um conjunto vazio.
- Repita os caracteres da sequência. Para cada caractere, primeiro acrescente o caractere ao token atual. Se o token atual ainda não estiver no conjunto de tokens emitidos anteriormente, adicione o token atual a esse conjunto e permita que o novo token atual seja a string vazia.
- Se quando você chegar ao final da string, o token atual estiver vazio, envie os tokens emitidos anteriormente na ordem de emissão, separados por um caractere de espaço. Caso contrário, imprima a sequência original literalmente.
Entrada
A entrada para o STDIN deve ser uma sequência de dígitos.
Saída
O programa deve imprimir o resultado conforme especificado na etapa 3.
Amostras
Entradas de Amostra
2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937
Saídas de amostra
2 0 1 5
10101010
4 8 1 5 16 2 3 42
1 0 10 101 01 010
3 4 5 51 2 1 37 24 25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 95 0 28 841 971 69 39 937
Isso é código de golfe, portanto, as regras padrão de CG se aplicam. O programa mais curto em bytes vence.
(Solicite esclarecimentos nos comentários. Ainda sou novo nisso. Obrigado!)
1 0 10
, a próxima iteração encontrará 1
(já usada), avançará uma para localizar 10
(já usada) e depois avançará para encontrar 101
, que é novo e seria 'adicionado'. Ele adicionaria um espaço e você chegaria a um novo 0
, que já foi usado, mas está aqui no final da string. Portanto, a saída seria 1 0 10 101 0
, que é inválida ( 0
é repetida), e o script deve então apenas emitir a string de entrada. Só poderia fazer 1010
se 101
já tivesse sido usado.
If a unique number cannot be formed at the end of the string, then the input should be printed verbatim
10101010 não pode ser dividido, portanto é impresso como está.
1
, o que seria uma repetição. Então, em vez disso, você move para a direita no espaço 5, depois move para a direita novamente na etapa 4 e entra na etapa 5 novamente e cria 101
.
4815162342
Eu vejo o que você fez lá, irmão .