建立一个半基数循环奎


18

半基数环状喹是具有两种状态的环状喹,一种与另一种垂直。

规则

您可以决定要实现的旋转是顺时针还是逆时针。

旋转后,应将代码中的任何空格替换为空格以保留位置。

您的程序必须满足quine的社区定义

这是因此每种语言中最短的程序将获胜。您的第一个程序用于您的字节数。

禁止出现标准漏洞

例子

如果您的程序是:

$_='print';eval

然后,下一个迭代必须是:

$
_
=
'
p
r
i
n
t
'
;
e
v
a
l

要么

l
a
v
e
;
'
t
n
i
r
p
'
=
_
$

必须输出原始程序:

$_='print';eval

如果您的程序是:

;$_=';
;$_=';
print

然后,下一个迭代必须是:

;;
''t
==n
__i
$$r
;;p

要么:

p;;
r$$
i__
n==
t''
 ;;

必须输出原始程序:

;$_=';
;$_=';
print



1
@dylnan不,另一个人不要求互相拥抱。
Martin Ender

1
到目前为止,我已经看到了答案,我认为真正的挑战将是逆时针旋转或多行多行的quine(以便旋转不同于换位或只是插入换行)。

1
您可能需要两个程序不同。否则,碰巧具有旋转对称性的奎因将是有效的答案。
Martin Ender

Answers:


14

CJam19 17 15字节

{s"_~"+N*""-}_~

在线尝试! 尝试旋转。

说明

{s"_~"+  e# Standard quine framework. Puts a string representation of the entire
         e# program on the stack.
  N*     e# Riffle linefeeds into the string, which is effectively a clockwise
         e# rotation by 90°.
  ""-    e# Does nothing.
}_~

在旋转的代码中,到处都有换行符:

{
s
"
_
~
"
+
N
*
"
"
-
}
_
~

正如Lynn在Dom较早的quine挑战中注意到的那样,插入换行符实际上仍会形成有效的quine,因为无论如何,块内的换行符都将被逐字保留,并且"_~"字符串中还将有换行符,以使这两个字符最后显示在其上自己的路线。因此{s"_~"+...}_~(使用换行符)仍然是有效的quine框架(尽管在字符串末尾会有一个额外的换行符)。N*现在会在该字符串中插入更多的换行符,但是我们并不在乎:因为现在""-在该字符串中包含换行符,因此实际上从程序表示中删除了所有换行符。因此,我们再次获得了代码的水平形式,从而消除了旋转。




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.