Ta konkurencja się skończyła. Dzięki za interesujące wpisy nie esolang i gratulacje dla Jakuje za jego zwycięskie zgłoszenie JavaScript.
W wielkiej tradycji ASCII Art Challenges na tej stronie, oto kolejna. Biorąc pod uwagę wkład, narysuj spiralę.
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Proste, tak? Heh, heh, heh ... Tak ...
(Zainspirowany postem ASCII Dragons Curve i postami Optymalizatora ASCII Art of the Day )
Wkład
Dane wejściowe będą miały postać szeregu parametrów, zaczerpniętych ze zwykłego argumentu STDIN / function / itd., Niezależnie od języka, który składa się z czterech części. Częściami tymi mogą być cztery oddzielne argumenty, poczwórny, tablica wielkości 4 itd. Dla uproszczenia i spójności podczas wyzwania przedstawię dane wejściowe jako pojedyncze słowo.
- Liczba całkowita
2 ≤ x ≤ 20określająca rozmiar spirali w kategoriach „kwadratów”, przy czym każdy drukowany znak reprezentuje jeden „kwadrat”. Teoretycznie może to być ogromny zasięg, ale biorąc pod uwagę, że rysujemy grafikę ASCII, bezpiecznym górnym limitem będzie 20, aby pasowała dość przyzwoicie na ekranie. - Pojedyncza litera
d u rlubl, wskazująca początkowy ruch od początkowego „kwadratu” (w dół, w górę, w prawo, w lewo). - Opcjonalny
c, oznaczający „przeciwnie do ruchu wskazówek zegara”. Jeślicpominięto, załóż, że spirala obraca się zgodnie z ruchem wskazówek zegara. - Końcowa liczba całkowita,
1 ≤ y ≤ 10która określa liczbę powtórzeń rysunku spirali, wykorzystując wykończenie „kwadratu” poprzedniej spirali jako „kwadrat” początkowy nowej. Wybieram górną granicę 10, ponieważ chcę, aby rysunek zakończył się w pewnym momencie. - Kilka przykładowych danych wejściowych:
20lc513d22rc1
Co ciekawe, należy pamiętać, że nieparzyste wartości dla wielkości wejściowej powodują, że @zawsze będzie to dokładny środek spirali, ale nawet wartości mogą mieć początkowe przesunięcie „kwadratowe” w dowolnym z czterech przekątnych kierunków, w zależności od kierunku początkowego podróżować. Może to skutkować ... interesującymi ... wzorami. Zobacz dwa parzyste przykłady poniżej.
Dane wejściowe, które nie są zgodne ze specyfikacją wejściową (np. 11q#s), Są niezdefiniowane i w pełni oczekuję, że program odpowiednio odczyta kod. :)
Wydajność
Dane wyjściowe to dane wyjściowe do wydruku w formacie ASCII za pośrednictwem STDOUT odpowiadającego językowi, z następującymi specyfikacjami:
- Początkowy „kwadrat” (każdej rekurencji) musi być oznaczony znakiem at
@. - Końcowy „kwadrat” musi być oznaczony znakiem ampersand
&. W przypadku wielokrotnych rekurencji należy zaznaczyć tylko ostatni „kwadrat”&. - Rogi spiralnej ścieżki muszą „wskazywać” w kierunku jazdy, używając
< > v ^. - Przesuw pionowy należy narysować za pomocą rur
|. - Podróż w poziomie musi być rysowana za pomocą myślników
-. - „Kwadraty”, które zostaną zastąpione późniejszymi rekurencjami, powinny wyświetlać najnowszy kierunek podróży. Spowoduje to, że „nowsze” rekurencje będą się nakładać na „starsze” rekurencje. Zobacz
4rc3przykład poniżej. - Końcowa nowa linia jest OK, początkowe spacje mogą być koniecznością i dlatego są dozwolone, ale końcowe spacje nie są dozwolone.
- Nie zadokuję cię, jeśli użyjesz sekwencji ucieczki, aby narysować sztukę ASCII zmierzającą do STDOUT, ale będę cię cicho rozczarowany. (Nadal będziesz uprawniony do nagrody, jeśli z nich skorzystasz)
Przykłady
2d4 = średnica 2, zaczyna się od zejścia w dół, zgodnie z ruchem wskazówek zegara, 4 rekurencje
&@@@@
^<<<<
W tym przykładzie rysunek zaczyna się w prawym górnym rogu @, idzie w dół o jeden, w lewo, o jeden w górę. W tym momencie zakończyliśmy 2dczęść, więc zacznij drugą rekurencję, więc mamy następną @, niższą, lewą, wyższą; następnie 3. rekursja; potem czwarty i wreszcie nasz &.
4rc3 = średnica 4, zaczyna się w prawo, w lewo, 3 rekurencje
&--<
v-<|
|@^|<
>--^|
|@^|<
>--^|
|@^|
>--^
W tym przykładzie rysunek zaczyna się od dołu @, idzie w prawo, w górę, kręci się wokół, aż osiąga środek @i kończy 4rcczęść. To następnie powtarza się jeszcze dwa razy, aby uzyskać pełne 3 żądane rekurencje. Zauważ, że 4rc1byłby to tylko lewy górny blok 4x4 w tym przykładzie.
7u1 = średnica 7, zaczyna się od przejścia w górę, zgodnie z ruchem wskazówek zegara, 1 rekurencja (zwróć uwagę, że to samo co wprowadzenie)
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Zwycięstwo i ograniczenia
To jest Code Golf, więc najmniejsza odpowiedź w bajtach wygrywa. Zgłoszenia powinny mieć zwykłą formę programu / funkcji / bloku kodu CJam / itp. Obowiązują standardowe ograniczenia dotyczące luk. Profesjonalny kierowca na zamkniętym kursie. Jeśli podrażnienie nie ustępuje, przerwij stosowanie i skonsultuj się z lekarzem.