1632
правки
Изменения
Квайны
,rollbackEdits.php mass rollback
{{Определение
|definition='''Квайном''' (англ. '''куайном, quine''') <ref name=quineName/> называется программа, которая выводит свой исходный код. При этом, программа не должна использовать внешние данные (например, читать файл со своим исходным кодом).
}}
{{Определение
|definition='''Интроном''' (англ. ''intron'') <ref name=intronName/> называется часть сегмента данных, которая не используется для вывода кода, но сохраняющаяся сохраняется в процессе саморепликации квайна.
}}
{{Определение
|definition='''Би-квайномБиквайном''' (bi-quineангл. ''biquine'') называется программа, которая делает одно из двух:*при обычном запуске она выводит свой исходный код,
*при запуске с особым аргументом она выводит исходный код своего "брата" на другом языке программирования.
Её "брат " делает то же самое: выводит свой код при запуске без аргументов и выводит код оригинальной программы при запуске с переданным спец. специальным аргументом.
}}
{{Определение
|definition='''<tex>R</tex>-квайном''' (англ. <tex>R</tex>-''quine'') называется программа, способная вывести исходный код <tex>R-1</tex> программ на других языках программирования в зависимости от переданного ей аргумента, а так же также свой исходный код при вызове без аргументов.
}}
Заметим, что требование, чтобы программы были на разных языках программирования , важно, т.к. иначе все программы смогут иметь один и тот же код.
{{
Теорема
|about=о существовании мульти-квайновмультиквайнов|statement= На любом языке программирования можно написать мульти-квайнмультиквайн.|proof= Докажем утверждение для би-квайна, для биквайна. Для большего количества языков доказательство будет выглядеть аналогично.
Рассмотрим программу с двумя параметрами на языке <tex>L_1</tex>, которая выводит первый параметр при обычном запуске и второй {{- --}} при запуске со спец. аргументом. По [http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8#.D0.A2.D0.B5.D0.BE.D1.80.D0.B5.D0.BC.D0.B0_.D0.BE_.D0.BD.D0.B5.D0.BF.D0.BE.D0.B4.D0.B2.D0.B8.D0.B6.D0.BD.D0.BE.D0.B9_.D1.82.D0.BE.D1.87.D0.BA.D0.B5 [Теорема о рекурсии|теореме о неподвижной точкерекурсии]] мы можем зафиксировать первый параметр и сказать, что он будет равен исходному коду нашей программы. Таким образом, мы получим программу с одним параметром, которая выводит свой код при запуске без аргументов и выводит параметр при запуске со спец. аргументом. Проделаем то же самое для программы на языке <tex>L_2</tex>. И , наконец, зафиксируем как аргумент параметр первой исходник программы исходный код второй и наоборот.
}}