Sześciokąt, 37 35 34 31
10"+}(=${";<$<1}42/.0@_=<>\;>(_
Rozszerzony:
1 0 " +
} ( = $ {
" ; < $ < 1
} 4 2 / . 0 @
_ = < > \ ;
> ( _ . .
. . . .
Wypróbuj online
Zasadniczo ma tylko dwie pętle odliczające od dziesięciu do zera, wypisujące gwiazdkę na wewnętrznej pętli i nową linię na zewnętrznej pętli.
Wyjaśnienie:
Program składa się z trzech głównych części: inicjalizacji pamięci, pętli drukującej dziesięć gwiazdek i pętli drukującej nową linię. Pętla, która wypisuje nową linię, zawiera również pętlę, która wypisuje gwiazdki.
Po pierwsze, kod uruchamia całkowicie liniową inicjalizację pamięci. Kod działa się: 10"+}42
. To powoduje, że pamięć pobliskich krawędzi wygląda następująco:
10 \ / 10
|
42
42 to kod ASCII dla znaku gwiazdki, a dwa dziesiątki zostaną użyte jako nasze liczniki pętli. Warto zauważyć, że wskaźnik pamięci obecnie wskazuje na dwie dziesiątki, więc cofnięcie się spowoduje umieszczenie nas na jednej z dziesiątek.
Następnie uruchamiamy pętlę drukowania asterysku. Liniowo, kod wygląda następująco: ;".._(
. To wypisuje gwiazdkę, przesuwa wskaźnik pamięci do tyłu i w lewo, a na koniec zmniejsza tam wartość. Po jednej iteracji pamięć wyglądałaby następująco:
10 \ / 9
|
42
Następnie osiągamy warunek pętli: skrajnie lewy dolny >
. Jeśli krawędź, którą właśnie zmniejszyliśmy, jest nadal dodatnia, odbijamy się i wykonujemy a, {
aby przenieść nas z powrotem na 42. Następnie wciskamy a $
i wracamy do początku pętli drukowania ;
, pomijając <
. Jeśli wartość wynosiła zero, przechodzimy do drugiej pętli.
Zewnętrzna pętla zaczyna się od zresetowania ostatnio zerowanego brzegu pamięci do dziesięciu (jest to 10
w kodzie, jadąc na południowy zachód). Następnie wypisujemy dziesięć jako znak ASCII, który jest nowym wierszem. Następnie przechodzimy na drugą krawędź pamięci i zmniejszyć je {(
, a następnie wykonać to, co jest równoznaczne z bandą noops: =${_=
. Teraz, po jednej iteracji tej pętli, pamięć wyglądałaby następująco:
9 \ / 10
|
42
Tym razem pamięć jest skierowana na zewnątrz od krawędzi, przechowując dziewięć na powyższym schemacie. Następnie wykonujemy <
warunek, który działa jako warunek pętli dla pętli zewnętrznej. Jeśli wartość była niezerowa, odbijamy się od niektórych luster, a następnie ponownie zaczynamy wykonywać sensowne instrukcje po wejściu na szczyt sześciokąta w "
ruchu na południowy zachód. To powoduje, że przesuwamy się do tyłu i w lewo, ponownie na 42, ale skierowane do wewnątrz. Następnie =
odwraca nasz kierunek, odpowiednio resetując stan, aby ponownie rozpocząć wewnętrzną pętlę. Jeśli krawędź została ustawiona na zero, wskaźnik instrukcji rozpoczyna małą przygodę, która nic nie robi, dopóki nie wyjdzie z programu.
Przygoda rozpoczyna się od wskaźnika instrukcji wyruszającego na północny wschód, niebezpiecznie ignorując bezpieczeństwo głównych kierunków. Odważnie ignoruje lustro, które jest wyrównane z jego kierunkiem ( /
) i heroicznie wyskakuje z trampoliny ($
) całkowicie omijając śmiertelną pułapkę innej, całkowicie identycznej trampoliny. Wpatrując się w pustkę niezainicjowanych krawędzi sześciokąta, wskaźnik bez wahania dodaje dwie puste krawędzie, które są skierowane do siebie, ustawiając bieżącą krawędź na ich sumę: 0 (krawędź była wcześniej zerowa, ale wskaźnik lubi wierzę, że to było dość ważne). Ponieważ krawędź wynosi zero, wskaźnik wykonuje zakręt w lewo na rozwidleniu drogi, idąc do tajemniczego lasu (sześciokątów). Tam czuje się zdezorientowany, porusza się do przodu, do tyłu i do przodu, aż skończy w tym samym miejscu w pamięci, kiedy zaczął. Myśląc, że problem musi polegać na tym, że ostatnia krawędź została ostatnio ustawiona na zero, wskaźnik dzielnie umieścił a1
do aktualnej krawędzi. Następnie szlachetny wskaźnik bada inną ścieżkę, jedną z ... pułapką! Bieżąca krawędź jest zmniejszana i zerowana! Wskaźnik oszołomiony szokującym zwrotem zdarzeń wpada z powrotem w pułapkę, ustawiając bieżącą krawędź na ujemną. Rozwścieczony wskaźnik próbuje wrócić do względnie przyjemnego lasu, ale zauważa, że ponieważ obecna krawędź nie jest dodatnia, ścieżki ponownie się zmieniły i wskaźnik wchodzi do jaskini. A przez jaskinię mam na myśli ujście gigantycznego sześciokątnego robaka. Bezradny wskaźnik przeklina seksualność umierającym oddechem. Ponadto program się kończy.