タッパーの自己言及式
http://www.dgp.toronto.edu/people/mooncake/papers/SIGGRAPH2001_Tupper.pdf
とはの
のグラフを描くとこの式自体が表示されるというものだ。ここで
は
以下の最大の整数で日本ではガウス記号
と同じ。
は
を
で割ったあまりのこと。
この式を理解するための準備をしておこう。
(1) 2進数の
の位の数字が0か1かを知る方法
シフト演算子を使いたい所であるが、これを式で表現する。2で割ると1桁右にずれるので、で割った商の
の位を求めれば良い。つまり
となる。これは0または1の値をとるので、と比べて、真なら1、偽なら0となる評価を行えば良いので、
が2進数の
の位の数字となる。
原論文とは床関数をとる場所が少し違うが、タッパーの自己言及式の本質は、ここにある。
(2)2次元配列と1次元配列の行き来
縦横
の長方形の中の座標
を縦に一列に並べる。
但し座標は及び
とする。このとき、座標
は
番目にあることになる。
この操作の逆を考える。1次元配列の番目(最初は0番目)の要素を縦
横
の長方形に並べるとき、
という座標に対応する。
2023.12.25追記
言及されたという通知がきました。自己言及式だけに。