기간 2 리버스 퀸


10

당신의 임무는 자신의 소스 코드를 반대로 출력하는 프로그램을 작성하는 것입니다. 그러나 반전 된 코드가 실행될 때 올바른 방향을 향한 소스 코드를 출력해야합니다.

프로그램이이라고 가정하십시오 abc. 실행되면을 출력해야합니다 cba. cba실행시을 출력해야합니다 abc.

규칙

프로그램은 적절한 quine 의 모든 규칙을 따라야합니다 (소스 코드 출력 제외). 회문은 허용되지 않습니다.

랜덤 노트 : 나는 이것을 알고 있지만 변환 된 코드는 동일한 속성을 가져야하기 때문에이 과제는 다르다고 생각합니다.



답변:


9

RProgN , 3 바이트

1
2

이 답변 에 대해 알려주는 @MartinEnder에게 감사합니다 .

온라인으로 사용해보십시오!

작동 원리

이것은 올바른 quine 정의 에서 잠재적 결함을 이용합니다 .

프로그램의 다른 부분을 인코딩하는 프로그램의 섹션을 식별 할 수 있어야합니다. ( "다른"은 두 부분이 다른 위치에 나타남을 의미합니다.)

또한 퀴인은 직접 또는 간접적으로 자체 소스에 액세스해서는 안됩니다.

출력은 코드의 반대이고 코드는 회문이 아니기 때문에 분명히 여기에 해당됩니다.

RProgN – 프로그래머 표기법 – LIFO 스택을 사용하여 항목이 표시된 순서대로 인쇄합니다. 공백 및 / 또는 줄 바꿈으로 구분 된 두 개의 토큰 12 는 역순으로 튀어 나와 줄 바꿈으로 인쇄됩니다.

반전 된 프로그램을 인쇄합니다

2
1

차례로 원본을 인쇄합니다.

! enilno ti yrT


나는 URL을 좋아한다.
Christopher

4
우리는이 문제를 해결해야합니다 ... 메타 질문에 대한 새로운 답변 ( 이 의견을 기반으로 )을 게시 할 것이지만 기존 답변과 경쟁하기에 충분한 관심을 얻지 못할 것입니다.
ETHproductions

2
@ETHproductions :하세요. 현재 적절한 quine 정의에 몇 가지 문제가 있다고 생각합니다. (어쩌면, 내 언어 7은 적절한 사건에 대한 엣지 사례에 대한 연구입니다.이 특별한 경우 이외에도 다른 몇 가지를 처리 ​​할 수 ​​있습니다.) 정의; 1과 2는 자체적으로 명확하게 인코딩되므로 개행을 인코딩하는 내용에 대한 유일한 잠재적 관심은입니다. (이것은 1\n11s 가 서로를 인코딩 하는 a 와 다릅니다 . 그것은 아마도 적절한 quine이지만 적절한 리버스

9

Befunge-98 , 33 바이트

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

온라인으로 사용해보십시오!


좋은 첫 대답. 그러나를 사용하여 #헤더를 만드십시오. 또한 Tryitonline.net을 방문하여 온라인 통역사를 받으십시오
Christopher

2
또한 저장 버튼 아래에서 codegolf 제출 파일을 사용하십시오.
Christopher

링크를 추가하는 것을 잊어 버린 TIO에서 처음으로 편집했지만 이제 링크 추가에 대한 추가 정보와 헤더 팁 덕분에
IQuick 143

TIO의 "codegolf submission"옵션은 헤더를 포함하여 시작 템플릿을 제공합니다.
Ørjan Johansen 님이

gBefunge quines에서 프로그램 소스를 메모리에서 직접 읽으므로 허용되지 않는다고 생각 했습니까?

7

분열 2 , 10 바이트

"L;L'!+!'_

온라인으로 사용해보십시오!

인쇄합니다 :

_'!+!'L;L"

온라인으로 사용해보십시오!

그 반대.

설명

이것은 역 퀴인 의 수정입니다 . 여기서는 !인쇄에 사용되며 quote에서 하나의 코드 포인트 밖에없는 이점을 위해 노력하고 있습니다 ". 따라서 견적 인쇄 섹션을 회문 ( '!+!')으로 쉽게 만들 수 있습니다. 첫 번째 코드부터 시작하겠습니다 :

"L;L'!+!'_

이 프로그램은 Ls에 두 개의 진입 점이 있으며 , 각각 왼쪽으로 움직이는 원자를 만듭니다. 그러나, 올바른 것은 바로 ;그것을 때리는 것을 명중합니다 . 왼쪽은 문자열 모드로 들어가서 끝까지 감싸서 전체 코드 (제외 ")를 앞뒤로 인쇄합니다 . 그것은 이미 우리에게 제공합니다 _'!+!'L;L. 남은 것은을 인쇄하는 것 "입니다. _무시할 수있는, '!원자의 33 질량 (의 코드 포인트 세트 !) +단위로는 ", 및 !인쇄를. 이것이 모든 출력입니다. 'L세트의 코드 포인트에 원자 질량 L하지만 무관합니다. ;이 원자도 파괴하고 남은 원자가 없기 때문에 프로그램이 종료됩니다.

이제 다른 방향으로 돌리십시오.

_'!+!'L;L"

다시, 우리는 두 개의 진입 점이 있지만 하나의 원자는 즉시 파괴됩니다. 이번에는 !+!'먼저 섹션을 살펴보고 따옴표를 인쇄하여 시작합니다. 는 '_다시 무관하다, 그러나 우리는 필요 _(또는 다른 쓸모없는 문자) 여기 피하기 위해 '탈출 ". 아톰은 끝까지 감싸고 문자열 모드에서 소스 코드를 한 번 통과하여 나머지 프로그램을 역으로 인쇄 L한 다음 무시되고 ;아톰을 파괴하고 프로그램을 종료합니다.

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