トップページに戻る
次の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}