Куайн - программа на C#, которая выводит свой код

Иногда на собеседованиях в различных компаниях просят написать программу, которая выводит на экран свой собственный код.

Класс таких программ называется Куайн (Quine) в честь американского логика и философа Willard Van Orman Quine (1908—2000).

На первый взгляд задачка достаточно нетривиальная, однако решение на С# выглядит коротко и изящно:

    1: using System;
    2: class A{static void Main(){string s=@"using System;
    3: class A{{static void Main(){{string s=@{0}{1}{0};
    4: Console.Write(s,'{0}',s);}}}}";
    5: Console.Write(s,'"',s);}}

Если вам интересно узнать, как будет выглядеть такая программа для С++ или для других языков программирования, то вы можете зайти на ВикиПедию, в которой Куайнам посвящен целый раздел: https://ru.wikipedia.org/wiki/Quine

Comments

  • Anonymous
    January 29, 2009
    не работает, однако. вот так работает:   1: using System;   2: class A{static void Main(){string s=@"using System;   3: class A{{static void Main(){{string s=@{0}{1}{0};   4: Console.Write(s,'{0}',s);}}}}";   5: Console.Write(s,'"',s);}}

  • Anonymous
    February 11, 2009
    По моему это просто копирование текста программы в переменную и потом ее вывод на консоль. А в чем смысл этого?

  • Anonymous
    February 15, 2009
    Поправил багу