トップページに戻る    次のC#のサンプルへ    前のC#のサンプルへ

Cマガ電脳クラブ(第048回) ソース・ソース

問題

C言語で書かれたあるプログラムソースをコンパイルして実行したところ、
そのプログラムソースそのものが一字一句違わずに画面に表示された。
さて、いったいどんなソースだったのだろうか。なるべく短いソースを考えていただきたい。

ただし、コンパイル後の実行ファイルのみで動作しなければならず、
たとえばそのソースファイルを利用する(読み込んで表示するなど)ことは許されない。


ソース

class Program
{
    static void Main()
    {
        string str = "class Program{0}{1}{0}{4}static void Main(){0}{4}{1}{0}{4}{4}string str = {3}{5}{3};{0}{4}{4}System.Console.WriteLine(str, System.Environment.NewLine, (char)123, (char)125, (char)34, {3}{4}{3}, str);{0}{4}{2}{0}{2}";
        System.Console.WriteLine(str, System.Environment.NewLine, (char)123, (char)125, (char)34, "    ", str);
    }
}


実行結果

ソースと同じ


解説

実行時にソースコードそのものを表示するプログラムは、
日本語では不動点プログラム、
英語ではquineと呼ばれます。

System.Console.WriteLineでのフォーマット指定は下記となります。
●改行  System.Environment.NewLine {0}
●開き中括弧 (char)0x7B {1}  0x7Bは10進では123
●閉じ中括弧 (char)0x7D {2}  0x7Dは10進では125
●ダブルコート (char)0x22 {3}  0x22は10進では34
●4マススペース {4}
●strの中身 {5}