The Wayback Machine - http://web.archive.org/web/20120106163514/http://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%A2%E7%94%9F%E7%A8%8B%E5%BC%8F

自產生程式

维基百科,自由的百科全书
跳转到: 导航, 搜索

自產生程式(Quine),它以哲學家奎恩命名,指的是輸出結果為程式自身源碼的程式

能夠直接讀取自己源碼、讀入使用者輸入或空白的程式一般都不視為自產生程式。

目录

[编辑] 起源


Bratley, Paul and Jean Millo: "Computer Recreations; Self-Reproducing Automata", Software -- Practice & Experience, Vol. 2 (1972). pp. 397-400.1960Hamish DewarAtlas Autocode
%BEGIN
!THIS IS A SELF-REPRODUCING PROGRAM
%ROUTINESPEC R
R
PRINT SYMBOL(39)
R
PRINT SYMBOL(39)
NEWLINE
%CAPTION %END~
%CAPTION %ENDOFPROGRAM~
%ROUTINE R
%PRINTTEXT '
%BEGIN
!THIS IS A SELF-REPRODUCING PROGRAM
%ROUTINESPEC R
R
PRINT SYMBOL(39)
R
PRINT SYMBOL(39)
NEWLINE
%CAPTION %END~
%CAPTION %ENDOFPROGRAM~
%ROUTINE R
%PRINTTEXT '
%END
%ENDOFPROGRAM

[] 


q  ,wq(w)w P使\langle P \rangleP

SELFSELFAB \langle SELF \rangle=\langle A \rangle \langle B \rangle AB
A=“儲存\langle B \rangle
B=“對於輸入<M> ,而M為一段程式碼。
一、計算出q(<M>)
二、把計算結果和<M> 結合起來
三、印出所出求出描述。”




 A \langle B \rangle

B,\langle B \rangleM = B

B  \langle B \rangle ,  q(\langle B \rangle) \langle A \rangle  \langle A \rangle  \langle B \rangle  \langle SELF \rangle

 \langle SELF \rangle 

[] Python


Python  repr()  ``  q() 
>>> w='Hello World\nHwllo World'
>>> print w
Hello World
Hwllo World
>>> `w`
"'Hello World\\nHwllo World'"
>>> print w
Hello World
Hwllo World

A:
 >>> x='y="x="+`x`+"\\n"\nprint y+x'

B:
 >>> y="x="+`x`+"\n"
 >>> print y+x

[编辑] 參考文獻

[编辑] 外部連結

个人工具
名字空间
操作
导航
帮助
工具
其他语言