To pytanie jest inspirowane pytaniem Kevina Cruijssena .
Teraz, gdy dywan jest ułożony, chcemy go zwinąć. Twoim zadaniem jest napisanie programu, który pobiera ciąg znaków i zwraca spiralę wykonaną z tego ciągu (reprezentującą zwinięty dywan widziany z boku).
Procedura dla jednego kroku zwijania dywanu jest następująca. Jest przykład ilustrujący to, co mam na myśli. Zauważ, że przykład zaczyna się od częściowo zwiniętego dywanu dla lepszego zrozumienia:
ac
rpet
- oddzielić „głowę” od „ogona” dywanu: głowa jest tym, co do tej pory zostało zwinięte, ogon jest tym, co pozostało do zrolowania.
Head: ac Tail:
rp et
- Obróć głowicę o 90 °, zgodnie z ruchem wskazówek zegara.
Rotated head: ra Tail (unchanged):
pc et
- jeśli szerokość nowej głowy (tutaj
2) jest mniejsza lub równa długości ogona (tutaj2)- następnie połóż go na ogonie
- w przeciwnym razie dywan (jak na początku kroku) został zwinięty
New carpet: ra
pc
et
Powtórz procedurę tyle razy, ile potrzeba.
Dwa przykłady pokazujące wszystkie etapy zwijania dywanu:
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
Niektóre szczegóły:
- Nie musisz pokazywać wszystkich pośrednich kroków, tylko zwinięty dywan (np. Jeśli znajdziesz nie iteracyjny sposób obliczenia wyniku, jest on idealny). Ponadto nie musisz drukować żadnych wiodących białych znaków, w powyższych przykładach pokazuję je tylko w celu wyrównania elementów.
- Dane wejściowe to ciąg znaków, lista / tablica znaków
- Dane wyjściowe są drukowane na standardowe wyjście lub do pliku.
- Dane wejściowe są ładne: długość wynosi co najmniej 1 znak, a co najwyżej stała wystarczająco mała, aby nie powodowała problemów, ale nie możesz użyć tej stałej w swoim programie; treść ciągu to tylko ładne znaki ([a-zA-Z0-9]), kodowanie według twoich preferencji.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach. Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- Dodaj również wyjaśnienie swojej odpowiedzi, jeśli uważasz, że jest potrzebna.
ProgrammingPuzzlesAndCodeGolf- potknęła mnie ostateczna długość ogona większa niż 1.
printw lambda.