是否可以编写一个程序,利用“序列生成函数”打印自己的源代码?
我所谓的序列生成函数只是一个从特定区间返回值的函数(即可打印的ascii-charecters(32-126))。现在的观点是,这个生成的序列应该是程序自己的源代码。如你所见,实现一个返回任意序列的函数实际上是微不足道的,但由于返回的序列必须包含函数本身的实现,因此这是一项非常重要的任务。
这就是这样一个程序(和其相应的输出)看起来像
的样子#include <stdio.h>
int fun(int x) {
ins1;
ins2;
ins3;
.
.
.
return y;
}
int main(void) {
int i;
for ( i=0; i<size of the program; i++ ) {
printf("%c", fun(i));
}
return 0;
}
我个人认为这是不可能的,但由于我不太了解潜在的问题,我在这里发表了我的想法。 我真的很期待听到一些意见!
答案 0 :(得分:2)
如果您知道如何将数组编码为函数(您似乎已经说过您已经知道如何执行此操作),那么Kleene Recursion theorem可以保证它可以完成。
但是对于怀疑Thomases,here是一个C例子。它有一个程序生成函数,它只使用+, - ,*,/或调用其他使用它们的函数。
如果你有图灵的完整性和自由印刷你喜欢的东西,那么奎因总是可以的。
答案 1 :(得分:1)
你指的是一个QUINE。 Wiki的文章相当不错,有一些有用的链接。 http://en.wikipedia.org/wiki/Quine_%28computing%29
答案 2 :(得分:0)
要在切线处飞行,请尝试查看Tupper's Self-Referential Formula。