Oct 13, 2010 12:52
Квайн - компьютерная программа, которая выдаёт на выходе свой исходный код. Составлять квайны - очень интересная зарядка для мозга. В первую очередь это задача не на программирование, а на сообразительность. Существует один приём, со знанием которого нетрудно написать квайн на любом процедурном языке программирования. Программа разделяется на две части: исходник первой части кода и код, ответственный за вывод результата. Причём в первой части кода надо записать строковую константу с частью исходного кода.
Каждый раз при изучении нового для себя языка программирования я пытаюсь придумать квайн на этом языке. К сожалению, кроме этого приёма я пока так ничего и не придумал.
Пример на C#
using System;
class A{static void Main(){string s=@"using System;
class A{{static void Main(){{string s=@{0}{1}{0};
Console.Write(s,'{0}',s);}}}}";
Console.Write(s,'"',s);}}
Пример на Lispе (тот же приём, но со спецификой функционального программирования)
((lambda (x) (print (list x (list 'quote x)))) '(lambda (x) (print (list x (list 'quote x)))))
.net,
Программинг