-X
온라인으로 사용해보십시오!
반대로 시도하십시오!
설명
이것이 실제로 스택 캣츠의 이전 도전보다 훨씬 쉽다는 것이 밝혀졌습니다. 전체 프로그램 (신청 후 -m
)은 다음과 같습니다 -X-
. X
테이프 헤드의 왼쪽과 오른쪽 스택을 바꾸는 데 사용됩니다. 즉, 초기 스택에 전혀 영향을 미치지 않으므로 무시할 수 있습니다. 그러나 프로그램은 사실상--
(스택의 상단을 두 번 무효화) 아무 효과가 없습니다.
역 프로그램의 경우 apply를 적용 -m
합니다 X-X
. 다시 말하지만 X
아무것도하지 않으므로 프로그램은 효과적으로 단지 -
스택의 최상위를 무효화합니다.
다른 2 바이트 솔루션은입니다 만 -=
, 실제로는 동일합니다. 유일한 차이점은 =
전체 스택이 아니라 인접한 스택의 상단 만 교체 한다는 것 입니다.
그러나 다시 사용 -m
하는 것은 속임수처럼 느껴지므로 아래는 완전히 미러링 된 프로그램을 사용하는 솔루션입니다.
:I<->I:
온라인으로 사용해보십시오!
반대로 시도하십시오!
설명
이전 답변 의 고려 사항 은 여전히 적용됩니다 . 유효한 솔루션은 쌍으로 된 문자를 사용해야합니다 I
. 가능한 여섯 가지 솔루션 (TIO 링크에 포함)은 모두 거의 동일합니다. -
그리고 _
이 프로그램에 상당하고, :
대체 가능 |
하거나 T
(영 입력의 동시 작업도 비제 입력에 동일한 기능을 수행하고 있음). 가장 쉬운 방법으로 설명하기 위해 이것을 선택했습니다.
따라서 초기 스택은 -1
(무한한 0의 맨 위에) 입력을 유지하는 반면 테이프를 따라 다른 모든 스택은 0 만 유지합니다. Stack Cats는 짝수 길이의 프로그램이 아무것도하지 않는 속성을 가지고 있습니다 (종료되면 제공하지만 어쨌든이 도전에는 루프를 사용할 수 없습니다). 중심 문자가 아무 것도 수행하지 않는 홀수 길이의 프로그램에 대해서도 마찬가지입니다.
: Swap the input with the -1 below.
I Move the -1 one stack to the left and turn it into +1.
< Move another stack left (without taking the value).
- Negate the zero on top of that stack (i.e. do nothing).
따라서 프로그램의 후반부는 전반부를 취소하고 결국 입력을 -1
다시 끝 냅니다.
역 프로그램은 :I>-<I:
입니다. 그것이 어떻게 변화하는지 봅시다 :
: Swap the input with the -1 below.
I Move the -1 one stack to the left and turn it into +1.
> Move one stack right, i.e. back onto the initial stack which still holds the input.
- Negate the input.
< Move back to the left where we've parked the 1.
I Move that 1 back onto the initial stack and turn it back into a -1.
: Swap the -1 below the negated input to act as an EOF marker.