这个极好的quine如何运作?

时间:2010-12-21 21:42:53

标签: ruby quine

Another SO question提到Yusuke Endoh的奇妙qu .. quine是一个计算机程序,它生成一个自己的源代码副本作为唯一的输出;这个是扭曲的。 A must-see

但我无法弄清楚它是如何运作的。有什么指针吗?

1 个答案:

答案 0 :(得分:6)

首先,请注意v=行和ASCII地球是每代更改代码的唯一位。这给了我们一些关于这里真正发生了什么的暗示。

基本原则是全局模型在代码的前半部分用Zlib::Deflate编码,后半部分用Zlib::Inflate扩展它,读取它,并在其中绘制ASCII地球新代码,具有新的v值。 45°换档并没有什么特别之处;代码将以您喜欢的任何旋转绘制地球。 (事实上​​,如果你愿意,它需要一个命令行参数来指定度数。)

有关更多实现细节,我建议扩展源代码并对其进行跟踪,并基本了解如何设计quine:)