一種解答:
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天後細菌在培養...