天天看點

Ken Thompson爺爺的經典複制自身代碼程式 - Python版本(隻用兩行!)

Ken Thompson可是大牛人了!不認識的人趕快Google/百度一下。Ken爺爺是Unix創始人,C語言鼻祖!Ken 當時大學時候沒遊戲玩,就自己給自己出題目寫程式,就有了這個複制自身代碼的程式了,相當經典,當然那時還沒有C語言, Ken 是用 Fortran 編的. 後來在獲圖靈獎的演說中, Ken 用 C 語言示範了這個程式.請看Ken爺爺的經典C程式:

我嘗試用Python來完成這個複制自己的程式,出乎預料,我最短隻用了兩行就完成了,可見Python的強大。

解法一:

Ken Thompson爺爺的經典複制自身代碼程式 - Python版本(隻用兩行!)

a = "print 'a = ', repr(a), '\n', repr(a)[1:-5]', a"

Ken Thompson爺爺的經典複制自身代碼程式 - Python版本(隻用兩行!)

print 'a = ', repr(a), '\n', repr(a)[1:-5]

輸出結果:

a =  "print 'a = ', repr(a), '\n', repr(a)[1:-5]', a" 

print 'a = ', repr(a), '\n', repr(a)[1:-5]

解法二:

Ken Thompson爺爺的經典複制自身代碼程式 - Python版本(隻用兩行!)

a = ["print 'a = ', a, '\\n', ''.join(a)"]

Ken Thompson爺爺的經典複制自身代碼程式 - Python版本(隻用兩行!)

print 'a = ', a, '\n', ''.join(a)

a = ["print 'a = ', a, '\\n', ''.join(a)"]

print 'a = ', a, '\n', ''.join(a)

有興趣的朋友可以用C#試試~~

最後,真心祝願震區的朋友平安。讓我們堅信:中國人民是不可戰勝的!

本文轉自CoderZh部落格園部落格,原文連結:http://www.cnblogs.com/coderzh/archive/2008/05/13/1194445.html,如需轉載請自行聯系原作者