Wypróbowanie mojego pierwszego wymyślonego esolangu. Po początkowym zamieszaniu odkryłem, że rozwiązanie jest takie proste.
_1 p
_^v>~2+p
> >~3+p
> >~4+X@7~8+~@$^^{;
> >~5+@7~8+~@${;
Wyjaśnienie:
Programy wosku pszczelego działają na sześciokątnej siatce 2D. Programy są przechowywane w formacie prostokątnym.
a — b — c — d
/ \ / \ / \ /
e — f — g — h
/ \ / \ / \ /
i — j — k — l
jest przechowywany jako
abcd
efgh
ijkl
Instrukcje poruszania się w określonych kierunkach to:
b — d
/ \ / \ bd
< —IP — > or in compact form (β=IP): <β>
\ / \ / pq
p — q
Krótkie wyjaśnienie
_1 p
Utwórz adres IP, dodaj 1, a następnie przekieruj adres IP do wiersza 2
_^v>~2+p
Utwórz kolejny adres IP, na wypadek braku linii 1, spowolnij adres IP, aby upewnić się, że adres IP z pierwszej linii jest naprzód, a następnie dodaj 2, a następnie przekieruj do linii 3
> >~3+p
Dodaj 3, a następnie przekieruj do wiersza 4
> >~4+X@7~8+~@$^^{;
Dodaj 4, następnie ustaw 2. wartość pierwszego stosu na 15, następnie XOR najwyższą wartość i 2. wartość, spowolnij IP (aby upewnić się, że IP w linii 5 jest przed nami, jeśli linia 5 istnieje) i wyślij wynik, a następnie zakończ program.
> >~5+@7~8+~@${;
Dodaj 5, a następnie zrób to samo, co w wierszu 4, z wyjątkiem spowolnienia.
Zasadniczo program po prostu oblicza sumę xor 15
- Program nienaruszony: (1 + 2 + 3 + 4 + 5) x lub 15 = 0
- Brak linii 1: (2 + 3 + 4 + 5) x lub 15 = 1
- Brak linii 2: (1 + 3 + 4 + 5) x lub 15 = 2
- Brak linii 3: (1 + 2 + 4 + 5) x lub 15 = 3
- Brak linii 4: (1 + 2 + 3 + 5) x lub 15 = 4
- Brak wiersza 5: (1 + 2 + 3 + 4) x lub 15 = 5
Dodatkowe >
wiersze od 3 do 5 po prostu gwarantują, że jeśli brakuje jednej z linii od 2 do 4, adres IP nadal zostaje poprawnie przekierowany i nie opuszcza programu.
Możesz sklonować mój interpreter wosku pszczelego, napisany w Julii, z mojego repozytorium GitHub
Plik Readme na GitHub jest bardziej aktualny i ma lepszą strukturę niż strona esolangs.