Kod na tej stronie szybko się wyczerpuje. Musimy inwestować w łańcuchy odnawialne. Musisz napisać program, który pobiera ciąg znaków i przekształca go w wiatrak.
Wyzwanie
Jako przykład weźmy prosty ciąg wiatraka. Weź sznurek abc
. W tym przypadku oś jest postacią centralną b
. Ponieważ łańcuch ma długość 3 znaków, każde wyjście będzie miało dokładnie trzy linie wysokości i trzy znaki szerokości. Oto Twój wynik z kroku 1. (Zwróć uwagę na białe znaki)
ABC
Aby przejść do następnego kroku, obróć każdą postać wokół osi obrotu w prawo. Oto krok 2:
za b do
Oto kroki 3-8:
za b do
za b do
cba
do b za
do b za
do b za
I na dziewiątym kroku, zatacza pełne koło oryginalnego łańcucha:
ABC
Zauważ, że b
cały czas przebywałem w tym samym miejscu. Jest tak, ponieważ b
jest to znak przestawny. Musisz napisać program lub funkcję, która pobiera ciąg znaków jako dane wejściowe i wielokrotnie drukuje tę sekwencję, aż program zostanie zamknięty.
Wyjaśnienia
Wszystkie ciągi wejściowe będą miały nieparzystą liczbę znaków. (Aby każdy wiatrak miał oś obrotu)
Aby zadanie było proste, wszystkie ciągi znaków będą zawierały tylko wielkie i małe litery alfabetu.
Dane wyjściowe muszą być
len(input_string)
szerokie i wysokie.Nie ma znaczenia, od którego etapu sekwencji zaczniesz, tak długo, jak będziesz kontynuować obracanie i zapętlanie na zawsze.
Więcej testów IO:
Ponieważ post jest już dość długi, oto link do wyjścia dla „wiatraka”:
Dygresja:
Ponieważ ma to być wiatrak, byłoby wspaniale, gdybyś umieścił jakiś kod bojlera, aby go animować z małym opóźnieniem czasowym lub wkładem użytkownika między każdym krokiem. Ponieważ jednak niektóre języki nie mają wbudowanych funkcji czasu, nie jest to obowiązkowe. Konkurująca część Twojego zgłoszenia może po prostu wydrukować sekwencję tak szybko, jak to możliwe.
Odpowiedzi:
MATL ,
353321 bajtówPoniższe animuje wiatrak ( 26 bajtów )
Demo online
W tej wersji
Xx
specyfikacja kasuje wyświetlacz i1Y.
jest to 1-sekundowa pauza.Wyjaśnienie
Podstawową ideą jest to, że chcemy stworzyć dwie wersje danych wejściowych. Wersja „ortogonalna”
I wersja „diagonalna”
Wypychamy te dwie wersje na stos. Za każdym razem przez pętlę zmieniamy kolejność stosów i obracamy górną zgodnie z ruchem wskazówek zegara.
źródło
JavaScript (ES6), 291 bajtów
źródło
05AB1E ,
8853 bajtówKod:
Wypróbuj online! . Pamiętaj, aby nacisnąć przycisk zabicia zaraz po uruchomieniu, ponieważ przechodzi on w nieskończoną pętlę.
źródło
Ruby,
122119 bajtówWersja bez golfa ze snem, w programie testowym
Obrót nie jest zbyt przekonujący na pełnej wysokości konsoli. Ale jeśli zmniejszysz wysokość do długości ciągu wejściowego, obrót będzie o wiele bardziej przekonujący.
źródło
MATL ,
4744 bajtówWypróbuj online! (ale zabij to natychmiast, nieskończona pętla)
Z 1-sekundową pauzą: 56 bajtów
Wypróbuj online! (ponownie, nieskończona pętla)
źródło
Python 3 , 193 bajtów
Nie golfił
Rekurencyjny, 177 bajtów
(awaria po kilku sekundach)
Nie golfił
Inne rozwiązanie, 268 bajtów
Nie golfił
źródło
Pyth, 48 bajtów
Wypróbuj online! (Uwaga: jest to wersja, która nie zapętla się na zawsze, ponieważ spowodowałaby awarię interpretera).
Bezwstydnie przetłumaczone z rozwiązania Python 3 przez @ByHH .
Jak to działa:
źródło