반 추기경주기의 반을 만드십시오


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
지금까지 답변을 보았을 때 실제 도전은 반 시계 방향의 줄이거 나 둘 이상의 줄이있는 퀘인이라고 생각합니다 (따라서 회전은 조옮김 또는 단순히 줄 바꿈 삽입과는 다릅니다).
Weijun Zhou 2019

1
두 프로그램이 달라야 할 수도 있습니다. 그렇지 않으면 회전 대칭이 발생하는 퀴는 올바른 답이됩니다.
Martin Ender 2013

답변:


14

CJam , 19 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
*
"
"
-
}
_
~

으로 린은 돔의 이전 quine 도전에 주목 삽입 줄 바꿈 블록 내부의 줄 바꿈이 바로 그대로 어쨌든 유지 될 것이며, 또한에 줄 바꿈이있을 수 있기 때문에 실제로는 여전히 유효 quine를 형성 "_~"끝에 두 문자에 표시 할 수있는 문자열을 자신의 자신의 라인. 따라서 {s"_~"+...}_~(줄 바꿈)은 여전히 ​​유효한 퀴네 프레임 워크입니다 (문자열 끝에 추가 줄 바꿈이 있음). N*이제 해당 문자열에 더 많은 줄 바꿈을 삽입하지만 실제로는 신경 쓰지 않습니다. ""-이 문자열 안에 줄 바꿈이 있으므로 프로그램 표현에서 모든 줄 바꿈을 실제로 제거하기 때문입니다. 그래서 우리는 코드의 수평 형태로 돌아가서 회전을 취소합니다.




당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.