4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

待望のCOW 基礎編

Last updated at Posted at 2023-12-04

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の誰かが近日中に応用編を出してくれるような気がします、、、。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?