[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ジョーク記事です。
ただ、無意味というわけでもありません。
このサイトの別のいくつかの有用な記事の基礎となります。
今回この記事で紹介するのは、.net frameworkに新しく追加された、TimeMachine<T>クラスです。
このクラスはコンピュータに小型のタイムマシン(いわゆるtimeRegister)が搭載されている場合に使用可能となります。
このクラスの役割は、過去へ情報を送ること、そして未来から情報を取得することです。
これを上手く利用すると、NP完全問題を多項式時間内に解くことが出来たり、ソフトウェアの論理の力だけでそれを実行するハードウェアを破壊することも可能です(そのため、扱いには注意が必要です)。
TimeMachine<T>クラスはSystem.ClosedTimelikeCurves名前空間の基礎的なクラスです。
矛盾のない、過去を変更できないタイムトラベル、つまりClosed Timelike Curve : CTCを利用したプログラムはほとんどの場合これで用が足ります。
using System; using System.ClosedTimelikeCurves; class Program { static void Main() { TimeMachine<int> timeMachine = new TimeMachine<int>(); Console.WriteLine(timeMachine.FromFuture()); timeMachine.ToPast(3); } }
3
このプログラムは、未来から情報を受け取り、その内容を出力します。
このケースではまず、未来から3という数字が送られてくるので、それをコンソールに表示しています。
そしてその後、3という数字を過去へ送っているのです。
TimeMachine<T>クラスのTは、過去へ送る情報のデータ型です。
たとえばint型の情報を過去へ送る場合は、Tはintとなります。
Tの型はなんでもいいというわけではありません。
TはSystem.SerializableAttributeが付いている型である必要があります。
(intの他にはdoubleやstring、その他のSerializableAttributeが付いた型をTに指定できます)
実行するハードウェアでtimeRegister使用可能でない場合、TimeMachine<T>のコンストラクタはSystem.NotSupportedExceptionをスローします。
過去に情報を送るにはToPast()メソッドを使用します。
public void ToPast(T value);
valueは過去へ送る変数です。
未来から情報を受け取るには、FromFuture()メソッドを使用します。
public T FromFuture();
戻り値は未来から受け取った情報です。