Пробую свій перший винахід езоланг. Після первинної плутанини я виявив, що рішення настільки просте.
_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 верхнього та другого значень, сповільнюйте 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.