概要
Befungeのご機嫌なオンラインプレイグラウンドを見つけたので、ズンドコキヨシを書いた。(3年前)
参考: ズンドコキヨシまとめ
ズンドコキヨシとは
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
— てくも (@kumiromilk) March 9, 2016
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
Befunge
Befungeは1993年登場の難解言語の一種であり、プログラムのコードの読み取り方向を前後左右に自由に切り替えられる。Befunge 93の仕様では、 コードサイズに80桁25行という制限がある。あとあと、その制限が取っ払われた仕様が出て、あれよあれよと現在の最新仕様はBefunge 98らしい。二次元よりも高次元なプログラムがしたければ、Befunge 98のインタープリターを作るとよかろう。
ただし、私は思考の次元が低すぎてそんな3次元や4次元プログラム書けません。超次元の思索のためにもっと瞳が必要な。今回の例ではBefunge 93からBefunge 97の間の仕様で、ズンドコキヨシを書く。
Grant us eyes,grant us eyes.
Befungeってどんな言語?と知りたければ、以下の2ページが参考になる。
あるいは、aminylarginyl氏によるこちらの動画大変参考になる。
難解プログラミング言語 Befunge 実行の様子 https://t.co/b9VcbyRTWf @YouTubeさんから
— マンハッタン・クラム・チャウダー (@NanimonoKashira) 2019年7月12日
Qiitaは直にYouTube埋め込めんの?
どうやって実行すればいいの?
大変よくできたオンラインプレイグラウンドがあり、Befungeの実行や、ステップバイステップの実行ができる。
ここのインタープリターは、Befunge 93からBefunge 97の間の仕様であり、以下の機能と制限がある。
- The program space is the Befunge 93 80×25 torus. There's no Lahey space at the moment.
- Only a single PC (thread) is supported.
- Befunge 97 literals are supported: 0–9 and a–f.
- Character quoting (').
- No flying PCs.
- No handprints or fingerprints.
- Just a single stack.
ズンドコキヨシ
1つめ:すごく単純なズンドコキヨシ
「ズン→ズン→ズン→ズン→ドコ」と出力してから「キヨシ」を出力すれば良い。つまり、道を違えれば、1からやり直しにすれば良い。
Befungeではループをしたければ、閉路のコードを書けばいいのだ。
>|<<<<<<<<<<<<
>?>"こど",,52*,^
>v^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>"んず",,52*,_?>"んず",,52*,_?"んず",,52*,_?>"んず",,52*,_?>"こど",,52*,"!シ・ヨ・キ">:#,_@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
52*,
は、5かける2
で10
を得て、10
を文字として出力する。つまり改行を出すためのコード。
###実行結果
日本語は等幅ではなく、そのまま実行した場合矢印の向きが変に見えるので、例の中では「ズンドコ」を「zndk」と表している。
2つめ:頑張ったズンドコキヨシ
47文字でズンドコ!
0v#"キ・ヨ・シ!"<@,,,,,,$
>?>"んず",,1+
^>"こど",,3`#^_0
まとめ
- Befungeは上位者の言語