程序可以输出自己的副本

rag*_*ius 22 compression algorithm complexity-theory quine

我认为这可能是一个经典问题,但我不知道答案.一个程序可以输出自己的副本,如果有的话,是否有一个简短的程序来执行此操作?

我不接受"空程序"作为答案,我不接受有权访问自己的源代码的程序.相反,我在想这样的事情:

int main(int argc, char** argv){ printf("int main(argc, char** argv){ printf...
Run Code Online (Sandbox Code Playgroud)

但我不知道如何继续......

Cat*_*lus 36

它被称为quine,并且有一个网站收集它们.


Jor*_*ren 15

大多数quines的基本思想是:

  1. 你写的代码,需要一个字符串字面量s并打印,在更换出现(或发生)的特殊子的FOOs通过价值s本身.

  2. 您到目前为止获取程序的完整源代码并将其用作定义s.但是你从字符串中排除了定义 ,而是用foo替换它.s

嗯,这是一般的想法.其余的是字符串格式化细节,真的.


sdc*_*vvc 5

这被称为奎因:

quine是一个计算机程序,它不接受任何输入并生成自己的源代码的副本作为其唯一的输出.可计算性理论和计算机科学文献中这些程序的标准术语是自我复制程序,自我复制程序和自我复制程序.

当执行环境被视为一个函数时,quine是执行环境的固定点.任何图灵完整的编程语言都可以使用奎因,这是克莱恩递归定理的直接结果.为了娱乐,程序员有时会尝试用任何给定的编程语言开发最短的quine.

资料来源:维基百科