Escribir un programa que pasa a través de una cadena de caracteres no está en blanco (se puede suponer que son los dígitos 0
a 9
, pero nada en la forma en que se van a procesar depende de esto) y añade los espacios de acuerdo a las siguientes reglas.
- Deje que el token actual sea la cadena vacía, y los tokens emitidos previamente sean un conjunto vacío.
- Iterar a través de los caracteres de la cadena. Para cada personaje, primero agregue el personaje al token actual. Luego, si el token actual aún no está en el conjunto de tokens emitidos previamente, agregue el token actual a ese conjunto y deje que el nuevo token actual sea la cadena vacía.
- Si cuando llega al final de la cadena, el token actual está vacío, muestre los tokens emitidos previamente en orden de emisión, separados por un carácter de espacio. De lo contrario, envíe la cadena original literalmente.
Entrada
La entrada al STDIN debe ser una secuencia de dígitos.
Salida
El programa debe imprimir el resultado como se especifica en el paso 3.
Muestras
Entradas de muestra
2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937
Resultados de muestra
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
Este es el código de golf, por lo que se aplican las reglas estándar de CG. El programa más corto en bytes gana.
(Solicite cualquier aclaración en los comentarios. Todavía soy nuevo en esto. ¡Gracias!)
1 0 10
, la siguiente iteración encontrará 1
(ya utilizada), luego avanzará una para encontrar 10
(ya utilizada), luego avanzará una para buscar 101
, que es nueva y se 'agregará'. Luego agregaría un espacio y llegaría a uno nuevo 0
, que ya se ha utilizado, pero está aquí al final de la cadena. Por lo tanto, la salida sería 1 0 10 101 0
, que no es válida ( 0
se repite), y el script solo debe generar la cadena de entrada. Solo podría hacer 1010
si 101
ya se hubiera utilizado.
If a unique number cannot be formed at the end of the string, then the input should be printed verbatim
10101010 no se puede dividir, por lo que se imprime tal cual.
1
, lo que sería una repetición. Entonces, en cambio, te mueves hacia la derecha en el espacio 5, y luego te mueves hacia la derecha nuevamente en el paso 4, ingresas el paso 5 nuevamente y creas 101
.
4815162342
Veo lo que hiciste allí, Brotha .