Essayer mon premier esolang inventé. Après une confusion initiale, j'ai trouvé que la solution était si simple.
_1 p
_^v>~2+p
> >~3+p
> >~4+X@7~8+~@$^^{;
> >~5+@7~8+~@${;
Explication:
les programmes de cire d'abeille fonctionnent sur une grille hexagonale 2D. Les programmes sont stockés dans un format rectangulaire.
a — b — c — d
/ \ / \ / \ /
e — f — g — h
/ \ / \ / \ /
i — j — k — l
est stocké sous
abcd
efgh
ijkl
Les instructions pour se déplacer dans certaines directions sont les suivantes:
b — d
/ \ / \ bd
< —IP — > or in compact form (β=IP): <β>
\ / \ / pq
p — q
Brève explication
_1 p
Créez une IP, ajoutez 1, puis redirigez l'IP vers la ligne 2
_^v>~2+p
Créez une autre IP, juste au cas où la ligne 1 est manquante, ralentissez IP pour vous assurer que l'IP de la ligne 1 est en avance, puis ajoutez 2, puis redirigez vers la ligne 3
> >~3+p
Ajoutez 3, puis redirigez vers la ligne 4
> >~4+X@7~8+~@$^^{;
Ajoutez 4, puis définissez la 2e valeur lstack sur 15, puis XOR lstack top et 2nd values, ralentissez IP (pour vous assurer que IP dans la ligne 5 est en avance, si la ligne 5 existe) et sortez le résultat, puis terminez le programme.
> >~5+@7~8+~@${;
Ajoutez 5, puis faites la même chose qu'à la ligne 4, sauf le ralentissement.
Fondamentalement, le programme calcule simplement une somme xor 15
- Programme intact: (1 + 2 + 3 + 4 + 5) xor 15 = 0
- Ligne 1 manquante: (2 + 3 + 4 + 5) xor 15 = 1
- Ligne 2 manquante: (1 + 3 + 4 + 5) xor 15 = 2
- Ligne 3 manquante: (1 + 2 + 4 + 5) xor 15 = 3
- Ligne 4 manquante: (1 + 2 + 3 + 5) xor 15 = 4
- Ligne 5 manquante: (1 + 2 + 3 + 4) xor 15 = 5
Les >
lignes supplémentaires 3 à 5 garantissent simplement que si l'une des lignes 2 à 4 est manquante, l'adresse IP est toujours redirigée correctement et ne quitte pas le programme.
Vous pouvez cloner mon interprète de cire d'abeille, écrit en Julia, à partir de mon référentiel GitHub
Le readme sur GitHub est plus à jour et mieux structuré que la page esolangs.