期间2反向Quine


10

您的任务是编写一个程序,以反向输出其自己的源代码。但是,当运行反向代码时,应以正确的方向输出源代码。

说你的程序是abc。运行时,应输出cbacba,运行时应输出abc

规则

您的程序应遵循适当的规则的所有规则(输出源代码除外)。回文禁止。

随机说明:我知道这一点,但是我相信这个挑战是不同的,因为转换后的代码必须具有相同的属性。



Answers:


9

RProgN,3个字节

1
2

感谢@MartinEnder提醒我有关此答案的信息

在线尝试!

怎么运行的

这利用了我们对适当的麦片定义的潜在缺陷:

必须有可能识别程序的一部分,该部分对程序的不同部分进行编码。(“不同”表示两个部分出现在不同的位置。)

此外,木盒不得直接或间接访问其自身的源。

显然是这种情况,因为输出是代码的反向,并且代码不是回文。

RProgN – 反向程序员符号–使用LIFO堆栈并按弹出顺序在其上打印项目。以空格和/或换行符分隔的两个标记12以相反的顺序弹出,并以换行符分隔打印。

打印反向程序

2
1

依次打印原始文件。

!enilno ti yrT


我喜欢这个网址。
克里斯托弗·

4
我们应该解决此问题。。。我会在meta问题上发布新答案(基于此评论),但可能不会引起足够的重视来与现有答案竞争。
ETHproductions's

2
@ETHproductions:去做。我觉得我们当前的适当的quine定义存在几个问题。(可以说,我的语言7是针对适当情况下的边缘情况的研究;除此特殊情况外,它还可以处理很多其他情况。)FWIW,即使我们目前仍不确定这是否是适当的反向情况定义; 1和2自己清楚地编码,因此唯一潜在的兴趣是对换行符的编码方式。(这不同于a 1\n1,后者中的两个1s相互编码;这可能是一个适当的quine,但不是一个适当的反向quine。)

9

Befunge-98,33个字节

b3*>1#;-:0g,:#;_@_;#:,g0:-;#1>*b3

在线尝试!


不错的第一答案。但是使用#来使您成为标头。另请访问Tryitonline.net并获得在线口译服务
克里斯托弗(Christopher)

2
还要转到“保存”按钮下并使用codegolf提交之一。
Christopher

我最初是在TIO上编辑它的,我只是忘了添加链接,但是现在添加了它,感谢标题提示
IQuick 143

请注意,TIO上的“ codegolf提交”选项为您提供了一个起始模板,包括标题。
与Orjan约翰森

我以为gBefunge quines是不允许的,因为它直接从内存中读取程序的源代码?

7

裂变2,10字节

"L;L'!+!'_

在线尝试!

打印:

_'!+!'L;L"

在线尝试!

反之亦然。

说明

这是反奎因的一种修改。这对我们来说!是有用的,用于打印,并且距引号仅一个代码点"。这样可以更轻松地使报价打印部分回文('!+!')。让我们从第一个代码开始:

"L;L'!+!'_

该程序在Ls 有两个入口点,每个入口点都会创建一个向左的原子。但是,正确的人会立即击中;并摧毁它。左边的代码进入字符串模式并环绕到最后,以便"从后到前打印整个代码(除外)。那已经给了我们_'!+!'L;L。剩下的就是打印"_可以忽略不计,'!将原子的质量设置为33(的代码点!),将其+增加为",然后!打印出来。这就是所有的输出。该'L套原子质量的代码点L,但是那是无关紧要的。;也会破坏该原子,并且由于没有剩余原子,程序将终止。

现在反过来:

_'!+!'L;L"

同样,我们有两个入口点,但是一个原子立即被摧毁。这次我们!+!'首先浏览本节,因此我们从打印报价开始。该'_再次无关紧要,但我们需要的_(或其他一些无用的字符),这里以避免'逃避"。原子绕到最后,以字符串模式遍历源代码一次以反向打印其余程序,L然后忽略;原子并销毁原子并终止程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.