Quine

Posted on

Quine

Algorithm Gossip: 自产生程式(quine)

说明

自产生程式(quine)就是要写一个程式,这个程式的目的就是描述它自己,简单的说,如果您写了一个.java,编译它后产生一个.class档,然后 您将.java档案删除,您的.class档不需要.java档,它也可以印出.java档的内容。

解法

根据计算理论(Computation Theorem)递回原理,任何的程式语言都可以简单的写出自产生程式。简单指的是写出自产生程式并不需要特别的算法,只要利用Turing Machine的扩充多带Turing Machine的操作原理就可以写出。 撇开计算理论这看似高深的学科不谈们用一般的解释来说明如何写自产生程式,程式分做A、B两个部分,A部分描述B部分的功能,B部分则 负责将A的描述印出来,A似乎必须倚赖建构好的B,但B要有A才能列印,这看似矛盾,但其实不然,做法是将B编码,放置在不同的字元带上,几个字元带并不 是重点,看程式语言的语法而定,您可能需要多几个带,或少几个带,编码好之后,A部分完成,开始进入B部分,B部分不断在多个字元带上来回,并挑选出字元 并显示出来。

实作

直接看实例会容易懂些,以下是以Java程式实作的自产生程式,还考虑了程式缩排与可读性。 PrintSelf.java The Quine Page 有各种语言的自产生程式之实现。

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途
本文链接: Quine