記号の世界ゟ

このブログでは, 数学書などの書評を書きます。また、受験などの勉強法をまとめます。

『TIS-100』オリジナルプログラム言語によるパズル

これは以下のアドカレ12/15用の記事です。

adventar.org

今回は『TIS-100』を紹介します。
このゲームはオリジナルプログラミング言語で問題を解くゲームです。
store.steampowered.com

問題例を貼っておきます。
左の数列が上から流れて来るので、ノードで加工しながら下のノードに数列を返します。
この問題の場合は、数字をそれぞれ二倍したものを返すことが出来れば成功です。
f:id:tetobourbaki:20201215195921p:plain

ここで使われるオリジナル言語の仕様を簡単に言えば、「ノードベースのアセンブラ」です。
これが良くできていて、以下の点が特に面白いところです。

  • 一つのノードは、「コードを記述するスペース」と「データを受け渡す経路」の二つの役割がある
  • データは隣接するノードにしか送受信できない(ランダムアクセスメモリがない)
  • ノードに書けるコード量が決まっている


普通の言語にある機能が全然ないので、一から自力で考える必要があるのがこのゲームの面白いところです。
一見むずかしそうに見えますが、実際に難しくて、簡単そうな問題を一問解くのに数時間使ったりします。
逆に言えば、プログラミングの常識が通用しないので、最初のルールさえ覚えてしまえば誰でも楽しめます。


最初は、アルゴリズムをデータを受け渡すという仕組みで実現するところで引っかかると思います。
最後の方になると、一つのノードに書けるノード量の限界で困るようになります。


クリアした結果はランキングが出るのも面白いところです。
使ったノード数や処理実行回数などいろんな指標でランキングが付くので、やり込み要素も豊富です。
f:id:tetobourbaki:20201215200416p:plain


最後に、このゲームにはストーリーがあるのですが、これがどこで判明するのか全然わかりませんでした。
各問題に使えないノードがあるのですが、ここのDEBUGボタンを押すと、変な文字列が表示されます。
実は、問題を解いていくとこの文字列が正しい文章に修正されていきます。
f:id:tetobourbaki:20201215200829p:plain