Napisz program, który przechodzi przez ciąg znaków non-białych (można założyć, że są cyfry 0do 9, ale nie w sposób, w jaki mają być przetwarzane zależy od tego) i dodaje spacje zgodnie z następującymi zasadami.
- Niech bieżący token będzie pustym ciągiem, a poprzednio emitowane tokeny będą pustym zestawem.
- Iteruj po znakach łańcucha. Dla każdej postaci najpierw dodaj postać do bieżącego tokena. Następnie, jeśli bieżący token nie znajduje się już w zestawie wcześniej emitowanych tokenów, dodaj bieżący token do tego zestawu i niech nowy bieżący token będzie pustym ciągiem.
- Jeśli po osiągnięciu końca łańcucha bieżący token jest pusty, wyślij poprzednio wyemitowane tokeny w kolejności emisji, oddzielając je spacją. W przeciwnym razie wypisz oryginalny ciąg znaków dosłownie.
Wkład
Dane wejściowe do STDIN powinny być ciągiem cyfr.
Wydajność
Program powinien wydrukować wynik, jak określono w kroku 3.
Próbki
Przykładowe dane wejściowe
2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937
Przykładowe wyniki
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
To jest kod golfowy, więc obowiązują standardowe zasady CG. Najkrótszy program w bajtach wygrywa.
(Poproś o wyjaśnienia w komentarzach. Nadal jestem nowy. Dzięki!)
1 0 10 , pojawi się następna iteracja 1(już używana), następnie przejdź do jednej 10(już używana), a następnie przejdź do jednej 101, która jest nowa i zostanie dodana. Dodałoby to spację i dostałbyś nowy 0, który był już używany, ale znajduje się tutaj na końcu łańcucha. Dlatego wynik byłby 1 0 10 101 0niepoprawny ( 0jest powtarzany), a skrypt musi po prostu wyprowadzić ciąg wejściowy. Mógłby to zrobić tylko, 1010jeśli 101był już używany.
If a unique number cannot be formed at the end of the string, then the input should be printed verbatimnie można podzielić, więc jest drukowany w niezmienionej postaci.
1, co będzie powtórzeniem. Zamiast tego poruszasz się w prawo na polu 5, a następnie ponownie w prawo w kroku 4, a następnie ponownie wchodzisz do kroku 5 i tworzysz 101.
4815162342Widzę, co tam zrobiłeś, bracie .