Опробовать мой первый изобретенный esolang. После первоначальной путаницы я обнаружил, что решение очень простое.
_1 p
_^v>~2+p
> >~3+p
> >~4+X@7~8+~@$^^{;
> >~5+@7~8+~@${;
Объяснение:
Программы на основе пчелиного воска работают на двумерной гексагональной сетке. Программы хранятся в прямоугольном формате.
a — b — c — d
/ \ / \ / \ /
e — f — g — h
/ \ / \ / \ /
i — j — k — l
хранится как
abcd
efgh
ijkl
Инструкции для движения в определенных направлениях:
b — d
/ \ / \ bd
< —IP — > or in compact form (β=IP): <β>
\ / \ / pq
p — q
Краткое объяснение
_1 p
Создайте IP, добавьте 1, затем перенаправьте IP на строку 2
_^v>~2+p
Создайте другой IP, на случай, если строка 1 отсутствует, замедлите IP, чтобы убедиться, что IP из первой строки впереди, затем добавьте 2, затем перенаправьте на строку 3
> >~3+p
Добавьте 3, затем перенаправьте на строку 4
> >~4+X@7~8+~@$^^{;
Добавьте 4, затем установите значение 2-го lstack равным 15, затем значения XOR lstack top и 2nd, замедлите IP (чтобы убедиться, что IP в строке 5 впереди, если строка 5 существует) и выведите результат, затем завершите программу.
> >~5+@7~8+~@${;
Добавьте 5, затем сделайте то же самое, что и в строке 4, за исключением замедления.
В основном программа просто рассчитывает сумму xor 15
- Программа не повреждена: (1 + 2 + 3 + 4 + 5) xor 15 = 0
- Отсутствует строка 1: (2 + 3 + 4 + 5) xor 15 = 1
- Строка 2 отсутствует: (1 + 3 + 4 + 5) xor 15 = 2
- Строка 3 отсутствует: (1 + 2 + 4 + 5) xor 15 = 3
- Отсутствует строка 4: (1 + 2 + 3 + 5) xor 15 = 4
- Отсутствует строка 5: (1 + 2 + 3 + 4) xor 15 = 5
Дополнительные >
строки 3–5 просто гарантируют, что если одна из строк 2–4 пропущена, IP-адрес по-прежнему перенаправляется правильно и не покидает программу.
Вы можете клонировать мой интерпретатор пчелиного воска, написанный на Джулии, из моего репозитория GitHub
Файл readme на GitHub более современный и лучше структурированный, чем страница esolangs.