自列印演算法

2021-09-25 13:31:17 字數 1329 閱讀 6334

自列印問題描述:

自列印是指在程式中不讀取任何額外的資訊,僅使用程式**中攜帶的功能和資訊,將程式**本身列印輸出。

在閱讀下面的部分之前, 我強烈的建議你自己先想一下這個問題,然後試著去實現一下。

自列印演算法原理:

乙個完整的自列印程式通常至少包括兩部分:「描述部分」和「執行部分」。在「描述部分」,用字串變數來儲存「執行部分」的**。而「執行部分」的**則列印這個字串變數。

實現:

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 做矩陣列印的題目不能陷入小的範圍裡面,比如,不能像從哪個點開始,然後下個點是什麼 要建立巨集觀的思維方式 如下解釋 我們要找到左上和右下兩個位置,如下圖紅色框所示,找到這兩個點,我們...