действительно ли возможно записать программу, которая печатает ее собственный исходный код, использующий "производящую функцию последовательности"?
что я называю, производящая функция последовательности является просто функцией, которая возвращает значение из определенного интервала (т.е. печатаемый 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;
}
я лично думаю, что это не возможно, но так как я не знаю очень много о базовом вопросе, я отправил свои мысли здесь. я действительно ожидаю слышать некоторые мнения!
Если вы знаете, как закодировать массив как функцию (похоже, вы говорите, что уже знаете, как это сделать), то теорема рекурсии Клейна гарантирует, что это можно сделать.
Но для сомневающихся Томасов, вот пример на Си. В нем есть функция генерации программы, которая использует только +, -, *, / или вызывает другие функции, которые их используют.
Квины всегда возможны, если у вас есть полнота Тьюринга и свобода печатать то, что вам нравится.
То, что вы имеете в виду, - это КОЙНА. Статья в Wiki об этом довольно хороша, с некоторыми полезными ссылками. http://en.wikipedia.org/wiki/Quine_%28computing%29
Чтобы улететь по касательной, попробуйте посмотреть на формулу самореферентности Таппера .