※この記事には身内ネタが多数含まれます。
今回はなんと南東(@_SE0)、南東さんをテーマにしたプログラミング言語を作ってみました。もちろん本人に許可は取っていません。
なお京音ブログでは過去に、二条せらふ様が「ひなビタ♪」の登場人物である山形まり花をテーマにした言語を作られています。手法は似ているので是非こちらも読んでみてください(ダイマ)。
keionkakimasen.hatenadiary.com
HelloWorld
とりあえず見ていただきましょう。こちらがプログラミング言語「なんと南東(@_SE0)」で書かれたHelloWorldです。
なんとなんとなんとなんと(@_SE0)なんとなんとなんと南東なんと南東なんと(@_SE0)なんとなんとなんと南東なんと南東なんとなんと南東(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんと(@_SE0)なんとなんとなんと南東なんとなんとなんと南東なんと南東(@_SE0)なんとなんとなんと南東なんと南東なんとなんと南東南東(@_SE0)なんとなんとなんと南東なんと南東南東南東南東南東(@_SE0)なんとなんとなんと南東なんとなんとなんとなんとなんとなんと(@_SE0)なんとなんとなんと南東なんと南東なんとなんとなんと(@_SE0)なんとなんとなんと南東南東南東なんと南東なんと南東(@_SE0)なんとなんとなんと南東南東なんと南東南東南東南東(@_SE0)なんとなんとなんと南東南東南東なんと南東なんとなんと(@_SE0)なんとなんとなんと南東南東なんと南東南東南東なんと(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんと南東(@_SE0)なんとなんとなんと南東なんとなんと南東南東南東なんと(@_SE0)なんとなんとなんと南東南東なんと南東南東南東南東(@_SE0)なんとなんとなんと南東南東南東なんと南東なんとなんと(@_SE0)なんとなんとなんと南東南東なんと南東南東南東なんと(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんと南東(@_SE0)なんとなんとなんと南東なんとなんと南東南東南東なんと(@_SE0)なんとなんとなんと南東なんとなんとなんとなんとなんと(@_SE0)なんとなんとなんと南東南東なんと南東南東南東南東(@_SE0)なんとなんとなんと南東南東なんと南東南東なんとなんと(@_SE0)なんとなんとなんと南東南東なんと南東南東なんとなんと(@_SE0)なんとなんとなんと南東南東なんとなんと南東なんと南東(@_SE0)なんとなんとなんと南東なんとなんと南東なんとなんとなんと(@_SE0)(@_SE0)なんとなんとなんとなんと(@_SE0)なんと(@_SE0)なんと(@_SE0)南東なんとなんと南東(@_SE0)南東(@_SE0)なんとなんと(@_SE0)なんと(@_SE0)なんとなんと(@_SE0)(@_SE0)なんとなんとなんと南東(@_SE0)(@_SE0)(@_SE0)(@_SE0)
見ていただいて分かる通り、「なんと」「南東」「(@_SE0)」の3文字列を並べて作られています。
上のファイルを「HelloWorld.なんと南東」に保存して、実際に実行してみましょう。今回はなんと南東(@_SE0)インタプリタをnantouコマンドで使用できるよう準備しました。
言語仕様
プログラミング言語に明るい方なら察しがついているかもしれませんが、今回は有名な難解プログラミング言語「Whitespace」を元に作成しました。
Whitespaceは、3つの文字「スペース」「タブ文字」「改行文字」のみを使用する面白いプログラミング言語です。3文字とも不可視であることから、関係のないドキュメント内にプログラムを隠したりしておくこともできます。*1
こんなネタっぽい仕様ながら実はチューリング完全な言語であるため、やろうと思えば音ゲーを作ったり、𝕏(旧Twitter)のAPIを叩いて南東さんのメンションを荒らすプログラムを作ることもできます。私は絶対に書きたくないですが…(アセンブリを手書きでバリバリ書く人とかなら耐えられるかも?)
Whitespaceの詳しい言語仕様はこちらの資料がわかりやすいです。
~
Whitespaceの特徴として、不可視な文字だけでプログラミングできることもそうなのですが、そもそも使用する文字が3つだけというのがあります。
つまるところ、Whitespaceを元にすれば、(互いに干渉しない)任意の文字列3つを組み合わせてコーディングできる言語を簡単に作れてしまうということです。
ということで、「スペース」を"なんと"、「タブ文字」を"南東"、「改行文字」を"(@_SE0)"に対応させました。インタプリタもこの3つを置換してWhitespaceインタプリタに渡しているだけ。
他にもエータ・ベータ・イータとかでやっても面白そうな見た目になりそうです。中黒はコメント扱いで。
Whitespaceインタプリタにはこちらを使用しました。Node.jsで作られています。*2
日本語(2byte文字)を出力するプログラム
公式では2byte文字の標準出力にも対応しているので、試してみました。
ソースコードです。
なんとなんとなんとなんと(@_SE0)なんとなんとなんと南東なんと南東なんと(@_SE0)なんとなんとなんと南東なんと南東なんとなんと南東(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんと(@_SE0)なんとなんとなんと南東なんとなんとなんと南東なんと南東(@_SE0)なんとなんとなんと南東なんと南東なんとなんと南東南東(@_SE0)なんとなんとなんと南東なんと南東南東南東南東南東(@_SE0)なんとなんとなんと南東なんとなんとなんとなんとなんとなんと(@_SE0)なんとなんとなんと南東なんと南東なんとなんとなんと(@_SE0)なんとなんとなんと南東南東なんとなんと南東南東南東なんと南東南東南東なんとなんとなんと南東(@_SE0)なんとなんとなんと南東なんと南東なんとなんと南東南東なんと南東なんと南東なんと南東南東南東(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんとなんと南東南東なんと南東なんとなんとなんと(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんと南東なんとなんと南東なんとなんと南東南東(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんとなんと南東南東なんと南東なんと南東なんと(@_SE0)(@_SE0)なんとなんとなんとなんと(@_SE0)なんと(@_SE0)なんと(@_SE0)南東なんとなんと南東(@_SE0)南東(@_SE0)なんとなんと(@_SE0)なんと(@_SE0)なんとなんと(@_SE0)(@_SE0)なんとなんとなんと南東(@_SE0)(@_SE0)(@_SE0)(@_SE0)
FizzBuzz
新しい言語を学ぶときの定番プログラミング課題といえば、FizzBuzzです。
※FizzBuzzとは
1から順に数字を出力します。ただし3の倍数では「Fizz」、5の倍数では「Buzz」を出力します。また、3と5の倍数(15の倍数)では「FizzBuzz」と出力します。
自分で組むのがめんどくさかった難しかったので、こちらのページのコードをお借りして解読・改造させていただきました。こんなしょーもないネタのためにすみません。
なんとなんとなんと南東(@_SE0)(@_SE0)なんとなんと南東南東南東南東南東(@_SE0)なんとなんとなんとなんと(@_SE0)なんとなんとなんとなんと(@_SE0)南東南東なんと(@_SE0)なんとなんとなんとなんとなんと(@_SE0)(@_SE0)なんと南東なんと南東なんと(@_SE0)(@_SE0)なんと南東なんと南東南東(@_SE0)なんとなんとなんとなんと(@_SE0)南東南東南東なんとなんとなんと南東(@_SE0)南東なんとなんと南東(@_SE0)南東なんとなんとなんとなんとなんとなんと(@_SE0)なんと(@_SE0)なんと南東(@_SE0)なんと南東(@_SE0)なんとなんとなんとなんとなんとなんとなんと(@_SE0)なんとなんとなんと南東なんと南東なんと(@_SE0)南東(@_SE0)なんとなんとなんとなんとなんと南東(@_SE0)南東なんとなんとなんとなんと(@_SE0)なんとなんとなんとなんと南東南東なんとなんと南東なんと南東(@_SE0)南東なんとなんと南東(@_SE0)南東南東南東南東南東南東南東(@_SE0)(@_SE0)(@_SE0)(@_SE0)(@_SE0)なんとなんとなんと南東なんと(@_SE0)なんと(@_SE0)なんとなんとなんとなんと南東南東(@_SE0)南東なんと南東南東(@_SE0)南東なんと南東南東なんとなんと(@_SE0)(@_SE0)南東(@_SE0)(@_SE0)なんとなんと南東南東なんとなんと(@_SE0)なんとなんとなんと南東南東なんと南東南東南東南東(@_SE0)なんとなんとなんと南東南東南東なんと南東なんとなんと(@_SE0)なんとなんとなんと南東南東なんと南東南東南東なんと(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんと南東(@_SE0)なんとなんとなんと南東なんとなんと南東南東南東なんと(@_SE0)(@_SE0)なんと南東なんと(@_SE0)(@_SE0)南東(@_SE0)(@_SE0)なんとなんとなんと南東南東(@_SE0)なんと(@_SE0)なんとなんとなんとなんと南東なんと南東(@_SE0)南東なんと南東南東(@_SE0)南東なんとなんとなんと南東南東(@_SE0)(@_SE0)南東(@_SE0)(@_SE0)なんとなんとなんとなんと南東南東(@_SE0)なんとなんとなんと南東南東南東なんと南東なんと南東(@_SE0)なんとなんとなんと南東南東なんと南東南東南東南東(@_SE0)なんとなんとなんと南東南東南東なんと南東なんとなんと(@_SE0)なんとなんとなんと南東南東なんと南東南東南東なんと(@_SE0)なんとなんとなんと南東南東なんとなんとなんとなんと南東(@_SE0)なんとなんとなんと南東なんとなんと南東南東南東なんと(@_SE0)(@_SE0)なんと南東南東(@_SE0)(@_SE0)南東(@_SE0)(@_SE0)なんとなんとなんと(@_SE0)南東(@_SE0)なんとなんと南東(@_SE0)なんとなんと南東(@_SE0)なんとなんと南東(@_SE0)なんとなんと南東(@_SE0)なんとなんとなんとなんとなんとなんと(@_SE0)なんとなんとなんと南東(@_SE0)南東南東なんと(@_SE0)南東(@_SE0)(@_SE0)なんとなんと南東(@_SE0)南東(@_SE0)なんとなんと南東(@_SE0)なんとなんと南東(@_SE0)なんとなんと南東(@_SE0)なんとなんと南東(@_SE0)なんとなんと南東(@_SE0)なんとなんとなんとなんとなんとなんと(@_SE0)なんとなんとなんと南東(@_SE0)南東南東なんと(@_SE0)南東
普通の言語なら数行あれば書けるプログラムだけど、こんなに長くなっちゃった…でもいっぱいメンション荒らせるからいっか!めでたしめでたし。