面白いツイートを見かけたので、今更ながら流れに乗ってみました。
何番煎じかわかりませんがお盆休みなので許してください。
【問題】配列{"ドド","スコ"}からランダムに要素を標準出力し続け、『その並びが「ドドスコスコスコ」を3回繰り返したもの』に一致したときに「ラブ注入♡」と標準出力して終了するプログラムを作成せよ(配点:5点)
— ((🐑++)) (@Sheeeeepla) August 1, 2022
Befungeで書いてみた
vv " Love Chew New!" <
>#v,,,,,,,,,,,,,,,#v@
> ?"DD",, #v >?>#, #,"D"<
, > vv?<,,"SC"<
, v,,"SC" <> ^
^ >? ###v ^
>"CS",,> ?>"DD",,v
^"SC"v# < <v,,"SC"?^
v ?<,,"SC"? #^^
> #" >> #^ #" ^
> #C,, v >"CS", ^
^ "SC"<
v"DD"<
> ,,>?^"# ?<
,#> ?"CS",,^
v ^^<
^"SC"?^
^
SCDDDDSCDDSCSCDDSCSCDDDDSCDDSCDDSCSCSCSCSCDDDDDDSCDDSCSCDDSCDDDDSCDDSCSCDDSCSCSCSCSCDDSCSCSCSCSCSCSCSCDDSCDDDDDDSCDDSCSCSCSCDDSCSCSCSCSCSCSCSCSCDDSCSCDDDDSCSCSCDDSCDDSCSCSCSCDDDDSCDDDDSCSCDDDDSCSCSCDDSCSCSCDDSCDDDDDDDDDDSCDDSCDDDDDDSCDDSCSCSCSCSCDDSCDDSCSCDDSCDDDDSCDDSCSCSCDDDDSCSCDDSCSCDDDDSCDDSCDDSCDDDDDDSCSCSCSCSCSCSCSCSCDDSCDDSCDDDDSCSCSCDDDDDDSCDDDDDDSCDDDDDDSCSCSCSCSCSCDDSCDDDDDDDDSCSCSCDDSCDDSCSCSCDDSCSCSCDDSCSCSC Love Chew New!
Befungeとは
ひたすらコンパイルの難しさのみを追求したEsolangの一種、要は難解ネタ言語です。詳しくはEsolangのWikiをご覧ください。
2次元平面上を自由に行き来するBrainf**kだと思うとわかりやすいかと思います。ちなみにBefungeの3次元バージョンのTrefungeというものもあります。酔狂勉強熱心な方はぜひ手元でいじってみてください。
Hello, World!
例えば、Hello, World! はこうなります。
> v
> ,,,,,,,,,,,,,@
^"Hello, World!"<
- 左上からスタートします。
- ">"があるので右に進路を取ります。
- 右上の"v"まで来ると今度は下に進みます。
- 右下の"<"で左に進みます。
- "Hello, World!"を後ろから順にスタックにプッシュしていきます。
- 左下の"^"で上に進みます。
- 2行目の">"で右に進みます。
- ","はスタックをポップして出力します。
- "@"にたどり着くとプログラム停止です。
補足
ブラウザでも実行できます。実際にどうやって進んでいるのかリアルタイムで眺めることができます。子供の頃、蟻の行列を眺めるのが好きだった僕のような方は延々と楽しめると思います。
HTML5 Befunge93 Interpreter
反省会
アスキー文字以外が使えないので(使えたところで醍醐味であるコードの表示がずれる)、"ドドスコ"を"DDSC"、"ラブ注入♡"を"Love Chew New!"としました。ソースコードの最小文字数を目指すゴルフ路線も考えたのですが、このご時世、ソースコードの中だけでもせめて自由に動き回りたいなと思い、縦横無尽に移動することをコンセプトとしました。
粗末なコードですが多めに見てくださると幸いです。