能够把自身代码打印出来的程序,叫做Quine。
下面是python的一行quine:
_='_=%r;print _%%_';print _%_
有人说有分号不算一行,无分号版:
print(lambda x:x+str((x,)))('print(lambda x:x+str((x,)))',)
其实,如果你用程序语言的名字+quine作为关键字去搜索,你能找到各种语言实现的Quine。对于各种语言的拥护者来说,能不能写一个优雅的quine是很重要的事,类似的,每个新语言都要实现自举(用语言本身实现编译器、解释器)才登得上大雅之堂。
如果你认为写一个简单Quine就能满足程序员们,你就太年轻了:
GitHub - mame/quine-relay: An uroboros program with 100 programming languages
这个repo用100种语言实现了一个quine环:
就问你,虐不虐?