Biorąc pod uwagę ciąg, Twoim zadaniem jest zwinięcie go w strukturę zygzakowatą, jak opisano poniżej.
Składany w zygzak
Weźmy ciąg "Mississippi"
jako przykład:
Najpierw wypisz najdłuższy prefiks składający się tylko z unikalnych znaków:
Mis
Kiedy dojdziesz do pierwszego zduplikowanego znaku C , zignoruj go i wypisz najdłuższy prefiks składający się z unikalnych znaków pozostałego ciągu (
issippi
) pionowo, poniżej pierwszego wystąpienia C :Mis i s
Powtórz proces, naprzemiennie z kontynuacją poziomą i pionową. Ale teraz uważaj (w kroku 1), aby kontynuować wyświetlanie w poziomie od ostatniego wystąpienia zduplikowanego znaku, który niekoniecznie jest ostatnim, jak w tym przypadku:
Mis i sip ----- Mis i sip i
Zasady
- Ciąg będzie zawierał tylko znaki ASCII do wydruku, ale nie będzie zawierał żadnych białych znaków.
- Możesz konkurować w dowolnym języku programowania i przyjmować dane wejściowe i dostarczać dane wyjściowe dowolną standardową metodą w dowolnym rozsądnym formacie 1 , zwracając uwagę, że te luki są domyślnie zabronione. To jest golf golfowy , więc wygrywa najkrótsze przesłanie (w bajtach) dla każdego języka .
- 1 Dane wejściowe: Ciąg / Lista znaków / cokolwiek innego, jakiego używa Twój język do reprezentowania ciągów. Dane wyjściowe: Ciąg wielowierszowy, lista ciągów reprezentujących wiersze lub lista list ciągów znaków / długość-1, ale w miarę możliwości prosimy o dołączenie do odpowiedzi ładnej wersji kodu.
- Jeśli chodzi o dodatkowe spacje, dane wyjściowe mogą zawierać:
- Wiodące / końcowe znaki nowej linii
- Końcowe spacje na każdej linii / na końcu
- Zgodne liczba czołowych miejsc na każdej linii
- Musisz zacząć wyjścia poziomo, może nie uruchomić w pionie.
Przypadki testowe
Wejścia:
"Doskonały" „Mississippi” „Dziwactwa” "Fidrygałki" „Cthulhu” „PPCG” „pOpOpOpOpOpOp” „ABCCCE” „ABCCCECCEEEEC” „abcdcebffg” „abca” „AAAAAAAA”
Odpowiednie wyniki:
Perf do t
Mis ja łyk ja
Od ies t
Triv za l ies t
Cthul u
P. do sol
pO OpO Muzyka pop p
ABC do mi
ABC CCE E EC
abcd mi b fg
ABC
ZA AA ZA
b
, ponieważ powinieneś brać pod uwagę tylko duplikaty w pozostałym ciągu , to znaczy po „rozgałęzieniu”. Po osiągnięciu drugiegoc
, wypisujesz najdłuższy prefiks unikatowych znaków pozostałego ciągu , który jestebffg
(w ten sposób wypisując webf
pionie i kontynuując poziomo po nim), więc nie musisz się martwić o znaki z części ciągu, która został już wyprowadzony przed zmianą orientacji. Jeśli nadal wydaje ci się to niejasne, dam kolejny krok po kroku przykład z tym przypadkiem testowym.ABCcde
"A" ≠ "a"
. WyjściemABCcde
byłoby po prostuABCcde
AAAAAAAA
Odpowiedzi:
Wolfram Language (Mathematica) , 143 bajty
Wypróbuj online!
Zawiera
0xF8FF
, co odpowiada\[Transpose]
operatorowi.Uff, ciężko było przekształcić wynik w strunę. Uzyskanie każdej gałęzi nie jest takie trudne:
#//.{q___,a_,r___,a_,Longest@s___}:>{q,a,{r},{s}}&
źródło
Python 2 , 131 bajtów
Wypróbuj online!
-1 dzięki Lynn .
Drukuje jako krotkę list ciągów o długości-1. Ładnie wydrukowane wydruki .
źródło
Python 2 ,
184176175168 bajtów-5 bajtów dzięki Mr. Xcoder
Wypróbuj online!
źródło
\
? Możesz również wyprowadzać jako listę list ciągów o długości 1, tak jak robię to w moim rozwiązaniu, dla OP.CJam , 81 bajtów
Wypróbuj online!
źródło