首先,请注意,v=
行和 ASCII 地球是代码中唯一会在每一代中更改的位。这给了我们一些关于这里真正发生的事情的提示。
基本原理是,地球模型Zlib::Deflate
在代码的前半部分用 编码,后半部分用 扩展Zlib::Inflate
,读取它,并在新代码中绘制 ASCII 地球,具有新v
值。45° 偏移没有什么特别之处。该代码将以您喜欢的任何旋转方式绘制地球。(事实上,如果你愿意,它需要一个命令行参数来指定度数。)
有关更多实现细节,我建议扩展源代码并对其进行跟踪,对quine的设计方式有基本的了解:)