画像を遺伝情報に見立てて、暗号化・交配・覚醒遺伝・遺伝子操作をやってみる。

遺伝子ゲーについて(再考) - 永字八法の続き。
任意の大きさの画像があるとする。全てのドットがRGBそれぞれ256段階で記述されているものを想定している。BMPPNGであろう。JPGは不可逆圧縮だし、GIFは色数の制限がつらい。
大きさは任意だが、後述の交配のために、大きさは統一しておきたい。便宜上32*32にしておく。

遺伝情報の読み取り

1.読み取りカーソルを(0,0)にセットする。
2.読み取りカーソルの位置のドットを読み込む。このドットは、色情報24ビットと位置情報を持っている。それを遺伝情報とみなす。
3.遺伝情報は仮想言語遺伝子語で記述されているとする。もし、ドットの情報がその記述形式に沿っていなかった場合は、そこは何も意味がないジャンク遺伝子であるとみなし、飛ばす。5へ。
4.遺伝情報はスロット番号と形質から成り立っている。スロット番号は便宜上0〜255とする。その個体のスロット表の、スロット番号の部分にその形質を書きこむ。すでに書き込まれている場合は、上書きされる。
5.読み取りカーソルを移動させる。通常は右に一つ。右端に到達していれば、左端に戻し、一行下に移動する。まだ全てのドットを読み込んでいなければ、2に戻る。そうでなければ終了。
こうして、画像からスロット表が完成する。

スロット表と優性形質

形質とは、その個体がどのような特徴を持つかを表現したものである。具体的には「金髪」「黒髪」あるいはゲーム的に「体力+1」「霊視」などと言ったものを含む。
スロット表の記述が、その個体の持つ外から見える特徴である。(スロット表が全くの空欄であっても構わないように、デフォルトの特徴はしっかりしていなければならない。)
まれに、スロット表に互いに矛盾する記述が現れるかも知れない。先にあげた「金髪」と「黒髪」の形質が同時に記述された場合などである。その場合は、スロット番号の高い方が優先される。プログラム的には、スロット番号の若い順に形質を適用していき、上書きしていけばよい。
このようにすることで、メンデルの法則を表現できる。

交配

同じサイズ(少なくとも高さは同じでなければならない)画像を用意して、両者を交配させるとする。
遺伝情報を、横一列ずつに分解する。それぞれのラインを染色体とみなす。
新しい画像(子)は、染色体毎にランダムに親のどちらかのそれを受け継いでいく。(人間ならば、高さ23ドットの画像と言うことになる)

切断・結合

また、ある少ない確率で、染色体の切断・結合がおこる。どちらの染色体を受け継ぐか決めた後で、受け継いだ染色体が途中で切れ、そこからは受け継がれなかった方の染色体が記述される。
ABCDと1234のうち、ABCDを受け継いだが、切断・結合が起こると、新しい染色体はABC4などになったりする。

突然変異

そして、さらに少ない確率で、遺伝情報の書き換えが起こる。あるドットが選ばれ、そのドットの内容は全くランダムに変化する。全く新しい形質ができるかも知れないし、ただのジャンクになってしまうかも知れない。まさに突然変異。

遺伝子操作

遺伝子操作は突然変異を人為的に起こすとみなせる。具体的にはフォトショかなんか開いて画像をいじればいい。ただし、ドットから形質へ変換する遺伝子語は非公開なので、どうすればいいかは操作者が自分で研究する必要がある。
経験からある色がある形質に対応していることがわかったとしたら、その色を移植するなどもできる。ただし、忘れてはならないのは、キャンバスの広さは有限なので、何かのドットを諦めなければ移植はできないことです。潰すドットがジャンクであることを祈りましょう。

応用

一方で、自分の好きなエンブレムを無理やり遺伝情報として読み込んでみるのも面白いかも知れない。