1.watnowアドベントカレンダー5日目
どうも記事を書くのは昨年ぶり経済系2回生、watnow所属の学生です。
昨年はハッカソンについて語りましたが、今年はガラッと変わってしっかり「プログラミング言語」についてお話ししていきたいと思います。
2.背景
前回ハッカソンのことを語りました。
実はハッカソンの間に偶然ある記事を見つけたのです。
短い簡単な文を書くだけなのに凄く手間をかけていました。
今回のテーマは「COW」。さあ見ていきましょうか。
3.COWとは
実用言語ではなく、難解プログラミング言語のひとつである。
牛の鳴き声"MOO"をMとm、Oとoに分け、3文字の組み合わせをトークンと解釈する。それ以外の文字はコメントとして扱う。
次に基本の仕様について見ていきます。
4.仕様
COW | 内容 |
---|---|
moO | ポインタをインクリメント |
mOo | ポインタをデクリメント |
MoO | ポインタの指す値をインクリメント |
MOo | ポインタの指す値をデクリメント |
oom | 入力から1バイトをポインタの指す値に代入 |
OOM | ポインタの指す値をASCII文字として出力 |
MOO | ポインタの指す値が0なら、対応する「moo」にジャンプ |
moo | ポインタの指す値が非0なら、対応する「Moo」にジャンプ |
mOO | ポインタの指す値を特定の命令として実行(3は無効) |
OOO | ポインタの指す値に0代入 |
MMM | レジスタに現在の値がない場合には現在のポインタの指す値をコピー。レジスタに値がある場合は、その値を現在のポインタの指す値に代入し、レジスタをクリアする |
Moo | ポインタの指す値が0なら「oom」、非0ならば「OOM」を実行 |
上記だけではわかりにくいかと思うので補足説明していきます。
まず、上記のM,m,O,oの組み合わせでASCII文字を使用して出力したい文字、記号、数字を指定します。
ASCIIコード表
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo
MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo
MOo Moo
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo
MOo MOo MOo MOo MOo MOo Moo
MoO Moo
MoO MoO MoO MoO MoO MoO MoO MoO Moo
MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo
MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo
MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo
MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo
MOo MOo Moo
今回のコードでは「watnow!」を出力できます。
5.解読の仕方
「watnow!」のコードを使って説明していきます。まず「w」を出力するために「MoO」を119個用いて119番を指定します。(ASCIIコード表)そして「Moo」を使い「w」を出力します。次に出力したい「a」は97番なので「MOo」を22個用いて指定します。このような作業を繰り返す事で、「watnow!」を出す事が出来ました!
6.????
今回は基礎編ということで「MoO」「MOo」「Moo」の3つのみを用いて説明してきました。次回以降、もしくはwatnowの誰かが近日中に応用編を出してくれるような気がします、、、。