2023-03-14: EmmentalでQuineを書いた
やったこと
Emmental
Emmentalという難解プログラミング言語がある。
https://esolangs.org/wiki/Emmental
スタックベースのプログラミング言語で、なぜかキューもある。
一番の特徴はコマンドを自分で定義できるところで、既存のコマンドを上書きしたりもできる。
そして、定義したコマンドの中でそのコマンドを再び呼ぶことでループができる。というかそれでしかループができない。
というわけでQuineを書いた。
キューにソースコードを 0
で挟んだものを入れて、出力するという形を取った。
ソースコードの文字をエンコードしたものを出力するのに、その文字に対応するコマンドを定義したのがちょっと面白い。
あと、なぜか末尾に謎の文字列が生成されて困ったのだけど、\x0a
(改行文字) にコマンドを割り当てていたからだったので、最後に定義を消すようにしたりした。
https://github.com/makenowjust/quine/blob/cba5c847b0c7b5fd4d8646e02ab65491510d009d/quine.emmental
$ ./emmental quine.emmental | diff quine.emmental -
生成スクリプトなど。インタープリタも作った。
https://gist.github.com/makenowjust/f3a5eb81a3c3f443c475c44e04a92961
一応、オリジナルの実装でも動くことは確かめている。
https://github.com/catseye/Emmental
なんかすごい重かったけど。オンラインの実装だとコールスタックが溢れるので無理。
というか作者はBefungeの人なのか。
ミリシタ
ホワイトデー。
ロコに鳩サブレを上げた。無難な方を選んでしまったがこれでいいだろう。
あとアニメ関連の配信があった。
世界観はいつものパラレルワールドらしい。
まあそうだろう。
バネPが安定して面白かった。さすが。