Answers:
1
2
感谢@MartinEnder提醒我有关此答案的信息。
这利用了我们对适当的麦片定义的潜在缺陷:
必须有可能识别程序的一部分,该部分对程序的不同部分进行编码。(“不同”表示两个部分出现在不同的位置。)
此外,木盒不得直接或间接访问其自身的源。
显然是这种情况,因为输出是代码的反向,并且代码不是回文。
RProgN – 反向程序员符号–使用LIFO堆栈并按弹出顺序在其上打印项目。以空格和/或换行符分隔的两个标记1和2以相反的顺序弹出,并以换行符分隔打印。
打印反向程序
2
1
依次打印原始文件。
#
来使您成为标头。另请访问Tryitonline.net并获得在线口译服务
"L;L'!+!'_
打印:
_'!+!'L;L"
反之亦然。
这是反奎因的一种修改。这对我们来说!
是有用的,用于打印,并且距引号仅一个代码点"
。这样可以更轻松地使报价打印部分回文('!+!'
)。让我们从第一个代码开始:
"L;L'!+!'_
该程序在L
s 有两个入口点,每个入口点都会创建一个向左的原子。但是,正确的人会立即击中;
并摧毁它。左边的代码进入字符串模式并环绕到最后,以便"
从后到前打印整个代码(除外)。那已经给了我们_'!+!'L;L
。剩下的就是打印"
。_
可以忽略不计,'!
将原子的质量设置为33(的代码点!
),将其+
增加为"
,然后!
打印出来。这就是所有的输出。该'L
套原子质量的代码点L
,但是那是无关紧要的。;
也会破坏该原子,并且由于没有剩余原子,程序将终止。
现在反过来:
_'!+!'L;L"
同样,我们有两个入口点,但是一个原子立即被摧毁。这次我们!+!'
首先浏览本节,因此我们从打印报价开始。该'_
再次无关紧要,但我们需要的_
(或其他一些无用的字符),这里以避免'
逃避"
。原子绕到最后,以字符串模式遍历源代码一次以反向打印其余程序,L
然后忽略;
原子并销毁原子并终止程序。