[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今回は、前回と前々回の記事をベースにして考えます。
未読の方は以下のふたつを読んで下さい。
タイムマシンコンピュータ System.ClosedTimelikeCurves.TimeMachine(T)クラス
タイムマシンコンピュータを利用してNP完全問題を多項式時間内に解く
using System; using System.ClosedTimelikeCurves; class Program { static void Main() { TimeMachine<bool> timeMachine = new TimeMachine<bool>(); bool value = timeMachine.FromFuture(); timeMachine.ToPast(!value); } }
このプログラムは一切外部への出力を行いません。
(まあ強いて言えば過去の自分自身へ情報を送っているので、その分は「外部への出力」といえなくもありませんが。)
外部にあるロボットアームを操作して、自分自身を実行しているコンピュータをハンマーで叩いたりは出来ないのです。
にも関わらず!
そう、にも関わらずです!
このプログラムは自身を実行しているハードウェアを破壊します!!
どういうことか見て行きましょう。
このプログラムは、まず未来の自分から情報を受け取ります。
そして、わざと、その情報を変えて過去へ送るのです。
そうするとどうなるでしょう?
そう、どうなるもこうなるもありません。
そんなことはありえないのです。
このプログラムは実際には実行されなかったのです。
このプログラムを最後まで正確に実行することは不可能です。
具体的に何が起きるのか?という可能性はだいぶ絞られます。
このプログラムを実行しているハードウェアが途中で破壊されたか、そもそも最初から実行されなかった(実行しようとした人がその直前に心臓発作か何かで死んでしまったなど)かのどちらかです。
どちらのケースにせよ、このプログラムは過去の自分以外の外部に出力を行わないにもかかわらず、外の世界に影響を与えるのです。
このプログラムは一見何の役に立つのかさっぱりわかりませんが、ものは使いようです。
以下がこのプログラムの建設的な応用法です。