Scrivere un programma che passa attraverso una stringa di caratteri che non sono spazi (si potrebbe supporre che essi sono cifre 0
a 9
, ma nulla nel modo in cui devono essere elaborati dipende da questo) e aggiunge gli spazi secondo le seguenti regole.
- Lascia che il token corrente sia la stringa vuota e i token precedentemente emessi siano un set vuoto.
- Scorrere i caratteri della stringa. Per ogni personaggio, prima aggiungi il personaggio al token corrente. Quindi, se il token corrente non è già nel set di token precedentemente emessi, aggiungi il token corrente a quel set e lascia che il nuovo token corrente sia la stringa vuota.
- Se quando si raggiunge la fine della stringa il token corrente è vuoto, emettere i token precedentemente emessi in ordine di emissione, separati da un carattere spazio. Altrimenti restituire la stringa originale alla lettera.
Ingresso
L'ingresso allo STDIN dovrebbe essere una sequenza di cifre.
Produzione
Il programma dovrebbe stampare il risultato come specificato al passaggio 3.
Campioni
Ingressi campione
2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937
Output di esempio
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
Questo è il golf del codice, quindi si applicano le regole CG standard. Vince il programma più breve in byte.
(Si prega di richiedere eventuali chiarimenti nei commenti. Sono ancora nuovo a questo. Grazie!)
1 0 10
, la prossima iterazione troverà 1
(già utilizzato), quindi avanzane uno per trovare 10
(già utilizzato), quindi avanzane uno per trovare 101
, che è nuovo e verrebbe "aggiunto". Quindi aggiungerebbe uno spazio e arriveresti a uno nuovo 0
, che è già stato usato, ma è qui alla fine della stringa. Pertanto, l'output sarebbe 1 0 10 101 0
, il che non è valido ( 0
viene ripetuto) e lo script deve quindi solo generare la stringa di input. Potrebbe fare solo 1010
se 101
fosse già stato usato.
If a unique number cannot be formed at the end of the string, then the input should be printed verbatim
10101010 non può essere diviso, quindi viene stampato così com'è.
1
, che sarebbe una ripetizione. Quindi, invece, ti sposti a destra uno nello spazio 5, quindi ti sposti di nuovo a destra nel passaggio 4 e inserisci nuovamente il passaggio 5 e crei 101
.
4815162342
Vedo cosa hai fatto lì, Brotha .