可以「繁殖」的程式

2021-10-11 03:56:54 字數 2357 閱讀 7929

一種解答:

m = r"""from random import sample

chrs = [chr(i) for i in range(ord("a"), ord("z") + 1)]

with open("".join(sample(chrs, 5)) + ".py", "w") as f:

print("m=r\"\"\"{}\"\"\"".format(m), file=f)

print(m, file=f)

"""from random import sample

chrs =

[chr

(i)for i in

range

(ord

("a"),

ord(

"z")+1

)]with

open(""

.join(sample(chrs,5)

)+".py"

,"w"

)as f:

print

("m=r\"\"\"{}\"\"\""

.format

(m),

file

=f)print

(m,file

=f)

如果語言不提供原始字串功能呢?

編寫乙個.c檔案並編譯成.exe程式,要求該程式能實現如下效果:

執行該.exe檔案,在標準輸出流中列印自己的源**(即.c檔案內容)

一種解答:

#include

const

char

* m =

"\";\n\nvoid\nprint_raw_str(const char* s)\n\n c = *++s;\n }\n}\n\nint\nmain()\n\n"

;void

print_raw_str

(const

char

* s)

c =*++s;}}

intmain()

上兩節給出的**就像他們「**族」的亞當和夏娃,它們都可以實現「雞生蛋,蛋生雞」的怪誕迴圈,對於py指令碼,則可以直接實現「無性生殖」。

嚴格來說,上面兩節給出的**並非完全符合要求的**。

這樣做即可得到真正符合要求的**(以c語言形式為例):

使用編譯器編譯上面給出的**:

$gcc a.c
得到a.exe檔案

執行a.exe檔案,其輸出才是完全符合要求的源**:

$a.exe > b.c
得到b.c檔案,b.c檔案才是真正符合要求的**。

可以給繁殖過程加入各種複雜功能,比如:「一次生倆」,下面是教程。

以python為例,只需兩步:

寫出如下**框架

m = r""

""""

# 插入其它**

print

("m=r\"\"\"{}\"\"\""

.format

(m))

print

(m)# 插入其它**

兩行print是核心、關鍵。

把第二行到最後一行複雜貼上到m中

m = r"""# 插入其它**

print("m=r\"\"\"{}\"\"\"".format(m))

print(m)

# 插入其它**

"""# 插入其它**

print

("m=r\"\"\"{}\"\"\""

.format

(m))

print

(m)# 插入其它**

大功告成,這個程式就可以在stdout中列印自己的源**了。

由於c語言沒有原始字串的機制,所以要自己插入乙個「反轉義」的函式。

什麼程式會要做這種奇怪的事情呢?

答案是「計算機病毒」,或者「人工智慧」。

有些人會說,借助作業系統提供的ar**[0]不就行了嗎,搞那麼複雜幹嘛?

那麼問題來了:「沒有作業系統就沒有計算機病毒嗎?計算機病毒必須依靠作業系統才能存活嗎?

答案是否定的,按這種方式,裸機+彙編程式設計都能寫出可自我繁殖的程式。

生物都是機器

生物都能自再生(繁殖)

機器不能自再生

關於第三句話:

例如汽車和生產汽車的自動生產線,設計生產線比設計汽車更加複雜,因為生產線中包含了汽車的設計。

因為任何生產機器b的機器a,a肯定比b更複雜。乙個機器不會比他自己更複雜,所以沒有機器能製造它自己,故機器不能自再生。

答案是:這個悖論是不成立的,機器可以自再生

細菌的繁殖與擴散

描述 在邊長為9的正方形培養皿中,正中心位置有m個細菌。假設細菌的壽命僅一天,但每天可繁殖10個後代,而且這10個後代,有兩個分布在原來的單元格中,其餘的均勻分布在其四周相鄰的八個單元格中。求經過n 1 n 4 天後,細菌在培養皿中的分布情況。輸入輸入為兩個整數,第乙個整數m表示中心位置細菌的個數 ...

POJ 珍惜昆蟲的繁殖問題

include include include define max n 5000 define max k 1000005 using namespace std 完成n個元素的初始化 int x max k int y max k int n,k int par max n int rank m...

細菌的繁殖與擴散 求助

在邊長為9的正方形培養皿中,正中心位置有m個細菌。假設細菌的壽命僅一天,但每天可繁殖10個後代,而且這10個後代,有兩個分布在原來的單元格中,其餘的均勻分布在其四周相鄰的八個單元格中。求經過n天後,細菌在培養皿中的分布情況。輸出九行九列整數矩陣,每行的整數之間用空格分隔。整個矩陣代表n天後細菌在培養...