10

是否可以编写一个使用“序列生成函数”打印自己的源代码的程序?

我所说的序列生成函数只是一个返回特定间隔之外的值的函数(即可打印的 ascii 字符(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;
}

我个人认为这是不可能的,但由于我对潜在问题不太了解,所以我在这里发表了我的想法。我真的很期待听到一些意见!

4

3 回答 3

2

如果您知道如何将数组编码为函数(您似乎在说您已经知道如何执行此操作),那么Kleene 递归定理保证它可以完成。

但是对于怀疑 Thomases,这里有一个 C 示例。它有一个程序生成函数,只使用+、-、*、/或调用其他使用它们的函数。

如果您具有图灵完备性和打印您喜欢的内容的自由,那么 Quines 总是可能的。

于 2010-05-18T16:56:04.730 回答
1

你指的是QUINE。Wiki 关于它的文章非常好,有一些有用的链接。http://en.wikipedia.org/wiki/Quine_%28computing%29

于 2010-05-17T14:24:07.930 回答
0

要切线起飞,请尝试查看Tupper 的自我参照公式

于 2010-05-18T17:04:28.893 回答