自列印問題描述:
自列印是指在程式中不讀取任何額外的資訊,僅使用程式**中攜帶的功能和資訊,將程式**本身列印輸出。
在閱讀下面的部分之前, 我強烈的建議你自己先想一下這個問題,然後試著去實現一下。
自列印演算法原理:
乙個完整的自列印程式通常至少包括兩部分:「描述部分」和「執行部分」。在「描述部分」,用字串變數來儲存「執行部分」的**。而「執行部分」的**則列印這個字串變數。
實現:
c語言版本:
用c語言實現的乙個自列印程式如下:[可以看出,該程式通過使用printf函式的特性來實現自列印]
#include char *format = "#include %c%cchar *format = %c%s%c;%cvoid main(void)%c%c";
void main(void
)
注意:format字串中一定不能包含轉義字元(像'\n', '\t'等),需要將他們轉變為其對應的ascii的形式。本程式用到的轉義字元對應的ascii如下:
'\n' -- 10 '\"' -- 34 '\t' -- 9
此時,我們可以執行該程式,來驗證其有效性:
lxw 20:42:14:~/lxw0109/c++$ ./a.out#include
char *format = "
#include %c%cchar *format = %c%s%c;%cvoid main(void)%c%c";
void main(void
)lxw
20:42:18:~/lxw0109/c++$ cat ownself.c
#include
char *format = "
#include %c%cchar *format = %c%s%c;%cvoid main(void)%c%c";
void main(void
)lxw
20:42:22:~/lxw0109/c++$
shell版本:
「----自列印演算法很有趣味性,它體現了高超的微觀技巧;自列印演算法顛覆了『神創造生命』的神權至上理論。----」
至於最簡短的自列印**(空程式)以及python實現的乙個非常棒的自列印程式,我這裡就不介紹了,你可以看這裡。
DNA 自指 自列印程式
我們清楚,dna能進行自我複製,是因為dna中編碼了複製自己的 實際上這種自我複製的機制並不簡單,而且非常迷人。侯世達在其大作 geb 中花了一章來講述dna的自複製機制。他指出,自複製的dna和自指的句子有著某種相似性,而且都與人的自我意識相似。自我意識實際上就是一種自指的現象。接下來我們從自指的...
沙漏演算法列印
列印沙漏演算法計算題 include using namespace std int main else if number temp 2 a 2 while 1 經過確定之後的匹配最大的列印沙漏,列印的只是一部分的四分之一,並且將中間的位置在四分之一的計算過程,之後用a temp 1的方式反而將迴...
演算法 列印矩陣
轉圈列印矩陣 題目 給定乙個整型矩陣matrix,請按照轉圈的方式列印它。如下圖所示 要求 額外的空間複雜度為0 1 做矩陣列印的題目不能陷入小的範圍裡面,比如,不能像從哪個點開始,然後下個點是什麼 要建立巨集觀的思維方式 如下解釋 我們要找到左上和右下兩個位置,如下圖紅色框所示,找到這兩個點,我們...