폴리 글로 퀴네를 앞뒤로!


9

한 언어로 소스 코드를 출력하고 다른 언어로 소스 코드를 뒤로 출력하는 폴리 글 로트를 작성해야합니다 . 일반적인 규칙과 달리 현재 파일을 읽거나 내장을 사용하여 제출의 소스 코드를 가져와 한 언어로 되돌릴 수 있습니다. 소스 코드는 회문이 될 수 없습니다.

예를 들어 소스 코드가 abcxyz인 경우 abcxyz한 언어와 zyxcba다른 언어로 출력해야합니다 . 코드가 abcxyzyxbca이면 회문이기 때문에 유효하지 않습니다.

행운을 빕니다!


3
일반적인 규칙이 있습니다. quine 내장을 허용하면이 문제를 너무 광범위하게 만들 수 있으며 회문 소스 코드를 허용하면 두 언어 모두에 대해 정답 인 답을 얻을 수 있습니다.
Outgolfer Erik

@EriktheOutgolfer 회문은 허용되지 않습니다.
programmer5000

1
@EriktheOutgolfer 아, 소스 코드 는 회문이 될 수 없습니까?
Luis Mendo

2
첫 번째 사람이 일반적인 퀴니 규칙을 위반하지 않고이 도전을 완료하려면 현상금을 제공해야한다고 생각합니다. (아마 50 회?)
clismique

1
두 언어가 모두 소스 코드를 읽는 경우를 명확하게 허용하지 않는 것으로 "한 언어로"읽었지만 현재 가장 인기있는 답변은 정확히 그렇게합니다. 허용 여부를 명확히하기 위해 편집 할 수 있습니까?
hvd

답변:



6

파이썬 2 / 파이썬 3, 71 바이트

lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]

quine 내장을 사용하지 않습니다.

일반적으로 나를 깨우는 ovs에게 감사합니다.


lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]71 바이트
ovs

@ovs 물론, 내가 어떻게 생각하지 않았는지.
Outgolfer Erik

6

배치 / bash + tac, 39 바이트

:;tac -r -s '.\|'$'\n' $0;exit
@type %0

배치로 앞으로 출력합니다. 설명 : Batch는 첫 번째 행을 레이블로보고이를 무시하고 두 번째 행은 단순히 소스 파일을 STDOUT에 복사합니다. (확장자를 포함하여 파일을 호출하거나로 변경 %0해야 %~f0합니다.) bash네 가지 명령이 표시됩니다.

  • :아무것도하지 않습니다 (와 동일 true)
  • tac -r -s '.\|'$'\n' $0
    • -rtac정규식 모드로
    • -s 정규식을 지정합니다
    • '.\|'$'\n' 정규식으로 구성되어 있습니다.
      • . 개행을 제외한 모든 문자
      • \| 또는
      • $'\n' 개행
    • 결론은 tac파일을 줄이 아닌 문자로 나누는 것입니다.
  • exit 네 번째 명령을 무시하고 스크립트를 중지합니다.
  • @type %0 (무시)

첫 줄을로 바꿀 수 있다고 생각합니다 :;rev $0|tac;exit. 또한 헤더에는 Batch / sh + util-linux + coreutils가 표시되어야 합니다.
Outgolfer Erik

@EriktheOutgolfer $'\n'는 Bashism 이며 줄 rev $0|tac바꿈을 올바르게 되 돌리지 않으며 tac패키지에 포함 된 것이 정말로 중요 합니까?
Neil

$'\n'내가 제안한 대체품에 존재하지 않으며 rev $0|tac나를 위해 일합니다. 그리고 때로는 혼란이 발생할 수 있기 때문에 개별 유틸리티 대신 패키지를 지정하는 것이 좋습니다 (예 : 어떤 패키지의 tac?).
Outgolfer Erik

@EriktheOutgolfer 온라인으로 사용해보십시오! 잘못되었습니다. 그래서입니다 온라인으로보십시오! (하지만 더 미묘하게).
Neil

설명해 주시겠습니까?
programmer5000

3

PHP 및 레티 나, 2 바이트

1

Gille의 PHP & GolfScript 답변과 동일합니다.

PHP는 코드를 읽고 직접 출력합니다. Retina는 입력에서 빈 문자열과 일치하는 항목을 대체하고 1로 바꾸고 줄 바꿈으로 출력합니다.


2

JS (ES5), JS (ES6), 94 바이트

function f(){try{eval("x=(f+'f()').split``.reverse().join``")}catch(e){x=f+"f()"};return x}f()

quine 내장 기능을 사용하지 않습니다. JS 함수가 코드로 문자열 화된다는 사실 만 사용하십시오. 아마 더 골프를 칠 수 있습니다.


1

소스 코드를 읽는 것을 허용한다면 실제로는 엉망이 아닙니다.

PHP 및 sh + util-linux, 6 바이트

rev $0

일반적인 골프 언어가 2 바이트로 할 수 있다고 확신합니다.


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