Dzięki Martin za 6 bajtów!
1="/}.!+/M8;
Rozszerzony:
1 = "
/ } . !
+ / M 8 ;
. . . .
. . .
Wypróbuj online
Stary, odpowiedz. Pozostaje, ponieważ obrazy i objaśnienia mogą być pomocne dla nowych użytkowników Hexagony.
!).={!/"*10;$.[+{]
Rozszerzony:
! ) .
= { ! /
" * 1 0 ;
$ . [ +
{ ] .
Spowoduje to wydrukowanie sekwencji Fibonacciego oddzielonej znakami nowej linii.
Wypróbuj online! Uważaj jednak, tłumacz online tak naprawdę nie lubi nieskończonej wydajności.
Wyjaśnienie
Istnieją dwa „podprogramy” tego programu, z których każdy jest obsługiwany przez jeden z dwóch używanych adresów IP. Pierwsza procedura drukuje znaki nowej linii, a druga wykonuje obliczenia i wyniki Fibonacciego.
Pierwszy podprogram rozpoczyna się w pierwszym wierszu i przez cały czas przesuwa się od lewej do prawej. Najpierw drukuje wartość wskaźnika pamięci (inicjowana na zero), a następnie zwiększa wartość wskaźnika pamięci o 1
. Po braku operacji adres IP przeskakuje do trzeciej linii, która najpierw przełącza się na inną komórkę pamięci, a następnie drukuje nową linię. Ponieważ nowa linia ma wartość dodatnią (jej wartość wynosi 10), kod zawsze przeskakuje do piątej linii, następnie. Piąta linia zwraca wskaźnik pamięci do naszego numeru Fibonacciego, a następnie przełącza się na inny podprogram. Kiedy wrócimy z tego podprogramu, adres IP przeskoczy z powrotem do trzeciej linii po wykonaniu braku operacji.
Drugi podprogram rozpoczyna się w prawym górnym rogu i rozpoczyna ruch na południowy wschód. Po przerwie wracamy do drugiej linii na zachód. Ta linia wypisuje aktualny numer Fibonacciego, przed przeniesieniem wskaźnika pamięci do następnej lokalizacji. Następnie IP przeskakuje do czwartej linii, gdzie oblicza następną liczbę Fibonacciego za pomocą poprzednich dwóch. Następnie przekazuje kontrolę z powrotem do pierwszego podprogramu, ale gdy odzyskuje kontrolę nad programem, kontynuuje działanie, aż napotka skok, w którym odbija się od lustra, które pierwotnie służyło do wskazywania go na zachód, gdy wraca do drugiej linii.
Wstępne ładne zdjęcia!
Lewa strona obrazu to program, prawa strona reprezentuje pamięć. Niebieska ramka to pierwszy adres IP, a oba adresy IP wskazują następną instrukcję do wykonania.
Uwaga: Zdjęcia mogą wyglądać ładnie tylko dla osób o podobnie ograniczonych umiejętnościach w programach do edycji obrazów: PI doda co najmniej 2 kolejne iteracje, aby korzystanie z *
operatora stało się bardziej przejrzyste.
Uwaga 2: Zobaczyłem odpowiedź alephalpha dopiero po napisaniu większości tego, pomyślałem, że wciąż była cenna z powodu separacji, ale rzeczywiste części Fibonacciego naszych programów są bardzo podobne. Ponadto jest to najmniejszy program Hexagony, który widziałem przy użyciu więcej niż jednego adresu IP, więc pomyślałem, że warto go zachować: P
^2
zastępstwie0,1
. +1