Thursday, November 13, 2008

[Python]Quine(自产生程式) in Python

Quine是指一个程序,它的输出为自身的源代码。这个学期的OS课里读到Ken Thompson的paper里说到了这样的一个程序。Ken Thompson在83年因为早年对Unix和C语言的贡献而得到了图灵奖。这篇paper 是他的图灵奖演讲文稿。在paper里他提到他在UC Berkeley念书的时候,同学们都热衷于写这样的程序并相互比赛谁的程序短。并且他还提到,如果你们自己没有写过这样的程序,他强烈建议自己来试一试写这个程序,会比由别人告诉你如何得到这个程序要有收获的多。于是我便没有接着往下读这个paper看Ken是如何完成的而是试图用Python来写一个这样的程序。最后得到了这样的程序:
M="print 'M='+repr(M)\nprint M"
print'M='+repr(M)
print M
Python来完成这个任务事实上是相当简洁的。因为repr()这个函数帮助我们完成了很多的工作。

No comments: