忍者ブログ

Memeplexes

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

タイムマシンコンピュータ System.ClosedTimelikeCurves.TimeMachine(T)クラス

ジョーク記事です。
ただ、無意味というわけでもありません。
このサイトの別のいくつかの有用な記事の基礎となります。


過去へ情報を送る/未来から情報を取得するプログラム

今回この記事で紹介するのは、.net frameworkに新しく追加された、TimeMachine<T>クラスです。
このクラスはコンピュータに小型のタイムマシン(いわゆるtimeRegister)が搭載されている場合に使用可能となります。
このクラスの役割は、過去へ情報を送ること、そして未来から情報を取得することです。

これを上手く利用すると、NP完全問題を多項式時間内に解くことが出来たり、ソフトウェアの論理の力だけでそれを実行するハードウェアを破壊することも可能です(そのため、扱いには注意が必要です)。

TimeMachine<T>クラス

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>クラスのインターフェース

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();

戻り値は未来から受け取った情報です。

拍手[1回]

PR