自己変化するプログラム。
docker compose build
docker compose run --rm code-of-life deno run -A index.ts --log ./logs/20240611-1
このプログラムは、自身が変化し続ける。任意のコードが実行可能なので、deno run index.ts ...
としてインタラクティブにアクセス許可をしていくか、上記コマンドでサンドボックス環境内で実行する。
指定したログのパス以下に、各世代のコードが保存される。ただし、新しい世代のコードにエラーがある場合は保存できない。
- 過去のコードだけでなく実行しないと分からない情報も参照できるように任意のテキストを格納できるレジストリを用意する
- Typescriptのチェックの結果を通達する仕組み
2.ts
はエラーのため手動で保存した。しかしこれは、初代(1.ts
)に比べて飛躍的な進化を遂げているように思える。
このプログラムのループ性を使って、「新しい物語を創作することを繰り返す」プログラムに進化しようとしていた。
3.ts
はエラーのため手動で保存した。
2.ts
で進化することを関数にするほか、instructionsHistory
を用意して、進化をnext generation = f(prev generation)
からnext = f(all past generations)
にしようとしていた。しかし単純に変数を用意するだけではそうした過去の世代の情報取得はうまく行かないことまでは理解できなかったようだ。
3.ts
では、前回のエポック同様、物語の創作を目指しはじめた。
Temperatureを2にするとすごかった。
生物の交配や突然変異を真似るような進化を果たした。