?? quine.htm
字號:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="css/stdlayout.css" type="text/css">
<link rel="stylesheet" href="css/print.css" type="text/css">
<meta content="text/html; charset=gb2312" http-equiv="content-type">
<title>自產生程式(quine)</title>
</head>
<body>
<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>
<h1><a href="AlgorithmGossip.htm">Algorithm Gossip: 自產生程式(quine)</a></h1>
<h2> 說明</h2>
自產生程式(quine)就是要寫一個程式,這個程式的目的就是描述它自己,簡單的說,如果您寫了一個.java,編譯它后產生一個.class檔,然后
您將.java檔案刪除,您的.class檔不需要.java檔,它也可以印出.java檔的內容。
<h2> 解法</h2>
根據計算理論(Computation
Theorem)遞回原理,任何的程式語言都可以簡單的寫出自產生程式。簡單指的是寫出自產生程式并不需要特別的算法,只要利用Turing
Machine的擴充多帶Turing Machine的操作原理就可以寫出。 <br>
<br>
撇開計算理論這看似高深的學科不談們用一般的解釋來說明如何寫自產生程式,程式分做A、B兩個部分,A部分描述B部分的功能,B部分則
負責將A的描述印出來,A似乎必須倚賴建構好的B,但B要有A才能列印,這看似矛盾,但其實不然,做法是將B編碼,放置在不同的字元帶上,幾個字元帶并不
是重點,看程式語言的語法而定,您可能需要多幾個帶,或少幾個帶,編碼好之后,A部分完成,開始進入B部分,B部分不斷在多個字元帶上來回,并挑選出字元
并顯示出來。
<h2> 實作</h2>
直接看實例會容易懂些,以下是以Java程式實作的自產生程式,還考慮了程式縮排與可讀性。<br>
<br>
<a class="urllink" href="PrintSelf.java">PrintSelf.java</a><br>
<br>
<a style="font-weight: bold;" href="http://www.nyx.org/%7Egthompso/quine.htm"><cite class="urllink">The Quine Page</cite></a>
有各種語言的自產生程式之實現。
<br>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -