LoginSignup
2

More than 3 years have passed since last update.

クリスマスにちなんだインタプリタ言語を作った

Last updated at Posted at 2019-12-24

この記事はクリスマスワンナイトハッカソンの成果物報告の記事です

はじめに

クリスマスを英語で書くとChristmasになりますね!!
なので、CとHとRとIとSとTとMとAで表現するBrainfuckに似せたインタプリタ言語を作りました!

その名も
Christma(クリスマ)
です!

ChristmaのインタプリタはC++で開発しました。Python版もあります。

メンバー

@Iwancof_ptr
@FPC_COMMUNITY
@e381x
みんなとてもつよつよで頑張ってくれました。ありがとうございました。

About Product

トラック倒し、バイトテロ、童貞いじり...
何かあったらすぐに炎上してしまう世知辛いこのデジタルの時代、私たちクリぼっちがクリスマスに一人でいるなんてことが全国のリア充どもに知られたら、暇つぶしに総攻撃を受けるに違いありません(偏見)
いつもみたいに、音ゲーのリザルトも、萌え絵も、くだらないコラもツイートすることすらできなくなってしまうのです!
しかし、そんな全国のボッチ達の悲壮な声にならない叫びを聞き、それらの問題を解決するプロダクトを作りました。
画像にプログラムを隠し、さらにインタプリタがないと実行すらできないという徹底された隠蔽...現代の辛い若者達のために作られた対リア充最終防衛ライン。その名も

C R I S T M A です。
image.png

言語仕様

Christmaは、C, H, R, I, S, T, M, Aの8文字で表現するBrainfuckに似せたインタプリタ言語です。拡張子はchriです。

  • C: ポインタをインクリメント
  • H: ポインタをデクリメント
  • R: ポインタの値をインクリメント
  • I: ポインタの値をデクリメント
  • S: 現在のポインタの値を出力
  • T: 入力から1バイト読み込みポインタが指す値に代入
  • M: ポインタの値が0なら、次のAまで飛ぶ
  • A: ポインタの値が0じゃなかったら、前のMまで飛ぶ

インタプリンタの機能

インタプリンタにはChristmaの実行の他にもこのような機能が実装されています。

インタプリンタ 機能
C++ 引数を指定せずに実行するとクリスマスツリーのAAが表示される
Python Christmaのコードが隠し埋め込まれた画像を復号・生成する
[復号] python read.py hoge.png
[生成] python steg.py poyo.png hoge.chri

画像に隠されたコードを復号・生成するのには「ステガノグラフィー」という技術を用いてます。

遊び方

  • プログラムコードの実行方法
    実行はコマンドライン引数からファイルのパスを取得して、そのパスのファイルを実行します。 もしコマンドライン引数が指定されずに実行した場合、クリスマスツリーが出力される仕様になっています。
  • 画像からの実行
    このツイートにあるような画像をダウンロードしてきて、それをread.pyに第一引数に指定して実行してください。そうすると...

ソースコード&ドキュメント

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
What you can do with signing up
2