忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

タイムマシンコンピューターをシミュレートする その3

前回と同じように、タイムマシンコンピュータが未来から受け取る情報をわざと変更します。ただし、今回は条件分岐を用いているのでほんの少しだけ高度です。


ソースコード

var results = TimeMachine.run(1, (timeMachine) => {
	var data = timeMachine.fromFuture();

	if(data != 0){
		data = 0;
	}

	timeMachine.toPast(data);
});

for(var result of results){
	console.log(result);
}

実行結果

0

解説

このプログラムは未来から1ビットの情報(0か1)を受け取り、それが0でなかったら(つまり1なら)0を過去に送ります。前回と同じように、このプログラムが最初に未来から受け取る情報は必ず0となります。前回と違うのは、このプログラムは、未来から0が来た時はそれに対して何もせずにそのまま過去に送るという点です。

気をつけるべきことは、「未来から1を受け取った時過去に0を送ったから、未来からその数字を受け取るようになった」のではないという点です。私たちは「過去と未来の情報が食い違ったから、その歴史が無効になった」と考えるべきなのです。次の図のように、2を過去に送っても、最終的に残る歴史では未来から0を受け取ります:

この図では2ビットの情報(0か1か2か3)をタイムマシンでループさせています。このとき、1~3の情報は別の数字に書き換えているため、生き残るのは0を未来から受け取る歴史だけです。歴史が消滅するのは、データを勝手に変更したからであって、変更した後どんな数字になっているかは歴史の消滅と関係ないのです。

このシミュレーションでは、タイムパラドックスを起こしてしまった歴史は宇宙ごと消滅するのです!もちろん、それは単なるシミュレーションのための計算テクニックにすぎず、現実にそういうことが起きるのか私は知りません。現実ではそんな事が起きないことを願います。

拍手[0回]

PR