당신의 임무는 "인사말, 행성!"을 인쇄하는 프로그램을 만드는 것입니다. 콘솔에 정확하게. 충분히 간단 해 보이죠? 자, 여기 속임수가 있습니다. 코드는 회문이어야합니다. 즉, 왼쪽에서 오른쪽과 동일하게 오른쪽에서 왼쪽으로 읽습니다. 표준 허점은 허용 되지 않습니다.
당신의 임무는 "인사말, 행성!"을 인쇄하는 프로그램을 만드는 것입니다. 콘솔에 정확하게. 충분히 간단 해 보이죠? 자, 여기 속임수가 있습니다. 코드는 회문이어야합니다. 즉, 왼쪽에서 오른쪽과 동일하게 오른쪽에서 왼쪽으로 읽습니다. 표준 허점은 허용 되지 않습니다.
답변:
"!tenalP ,sgniteerG"
"Greetings, Planet!"
이것은 프로그램의 마지막 줄이 화면에 표시되고 첫 번째 문자열은 본질적으로 주석으로 처리되기 때문에 작동합니다.
각 소문자는 2 바이트로 저장되며 나머지 문자는 1 바이트입니다. 규칙을 구부리고 모든 대문자로 인쇄하려면 41 바이트가됩니다 .
"!TENALP ,SGNITEERG"
"GREETINGS, PLANET!"
e
및 i
(숫자)를 사용할 수 있습니까 ?
나는 이것이 조금 늦었다는 것을 알고 있지만 ...
x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x
이 답변은 서로 약간 다릅니다. 코드의 어느 방향 으로든 기회가 있습니다 이 실행될 .
따라서 "콘솔에 인쇄"를 사용하면 표준 출력으로 인쇄한다고 가정했습니다. 오류가 발생합니다. 문자열이 stdout으로 인쇄 된 후 오류가 stderr에 발생합니다.
이것이 두 가지 방식으로 작동했다는 것을 증명하기 위해 "무작위 방향"감독 인 "x"를 사용했습니다. 피쉬는 2 차원 언어이므로, 감독이 어떤 방식으로 지시하든 코드는 여전히 (결국) 실행됩니다.
첫 번째 디렉터가 오른쪽을 가리키고 있다고 가정하면 문자가 "스택"에 역순으로로드 된 다음 역 (또는 일반 텍스트)의 역이 인쇄됩니다.
두 디렉터가 모두 왼쪽을 가리키고 있다고 가정하면 문자는 다시 한 번 역순으로 "스택"에로드됩니다 (코드가 여기에 뒤로로드되고 방향이 왼쪽에 있기 때문에). 일반 텍스트)가 인쇄됩니다.
임의 화 된 디렉터가 위 또는 아래를 가리켜도 문제가되지 않습니다. 피쉬는 코드의 밑면 또는 뒷면으로 반복하여 임의 화기를 가리 킵니다. 이런 식으로, 코드가 안쪽으로 향할 때까지 랜덤 화기를 사용하여 실행할 코드쪽으로 계속 반복됩니다.
!|o|!
비트는 양쪽에서 다음을 수행합니다
!
다음 명령어를 건너 뜁니다 (항상 건너 뜁니다 |
)
|
반사판입니다. 안쪽으로 향 o
합니다.
o
스택의 현재 항목을 문자로 콘솔에 출력하고 스택에서 제거합니다.
기본적으로 이것은 "욕실에서 두 개의 거울을 함께 눌렀습니다"라는 속임수로 더 이상 할 수 없을 때까지 출력됩니다.
이제 고양이 이모티콘을 사용합니다. >o<
출력을 무한대로 안쪽으로 리디렉션하지만 여전히 오류가 발생하지만 건너 뛰기로 건너 뛰지 않아도 벗어날 수 있습니다.
내가 처음 옳았다는 것이 밝혀졌다 – 두 번째 시도는 회문 이 아니 었지만 반사적 이었다 .
x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x
이 친구는 조금 더 길어요.
그것은 동일한 무작위 화살표 기능을 가지고 있으며 (두 가지 방식으로 작동 함을 증명하기 위해) stderr에 인쇄하지 않습니다.
여기서의 차이점은 분명합니다. 말 그대로 스택의 모든 항목을 인쇄 한 다음로 실행을 종료 ;
합니다.
는 !;
로 즉시 실행을 종료하지 않고 !
그것의 역할을 다른 쪽을 돌 때까지 스킵 (여기서는 최종 실행,)은 다음 항목 및 계속;!
이 아무것도 스킵 전에 실행을 종료하며,.
짧은 답변과 동일한 무작위 방향 패턴을 따릅니다.
print "Greetings, Planet!""!tenalP ,sgniteerG" tnirp
주석을 사용하지 않는 솔루션. (마카로니에는 주석이 없기 때문에 ...)
3 바이트를 끈 데니스에게 감사합니다.
"!tenalP ,sgniteerG";"Greetings, Planet!"
!tenalP ,sgniteerG"Greetings, Planet!
몇 바이트를 절약합니다.
이것은 모든 브라우저에서 실행할 수 있습니다.
alert("Greetings, Planet!")//)"!tenalP ,sgniteerG"(trela
print/tnirp
로 alert/trela
, 너무, 다른 엔진에서 작동합니다.
alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trela
는 52 바이트입니다
"Greetings, Planet!":"!tenalP ,sgniteerG"
엄마 좀 봐! Web GolfScript 에서 온라인으로 사용해보십시오 .
소스 코드의 후반부는 문자열을 두 번째 문자열에 저장합니다.
"Greetings, Planet!":"!tenalP ,sgniteerG"
"!tenalP ,sgniteerG"
인쇄 할 것이다
Greetings, Planet!Greetings, Planet!
25 바이트이 대답은 경쟁이 아닙니다. 도전은 젤리를 만들기 이전에 시작 되었기 때문입니다.
»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»
봐봐, 아니 댓글! 온라인으로 사용해보십시오!
»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1» Main link. No arguments.
“ “ “ » Decompress all three strings; yield a list of strings.
RsẈḄ,#ʠU (decompresses to 'Greetings, Planet!')
Uʠ#,ḄẈsR (decompresses to ' WafdkmC Posited,')
ị1 (decompresses to 'Taarhus')
»1 Take the maximum of the default argument (0) and 1.
ị Select the string at the index to the left.
Print@"Greetings, Planet!""!tenalP ,sgniteerG"@tnirP
또한 Null "!tenalP ,sgniteerG"[tnirP]
인쇄되지 않는을 생성합니다 .
Echo
에서 v10.3
.
암호:
”!º¥,ÁÙ””ÙÁ,¥º!”
설명:
”!º¥,ÁÙ” # Compressed string which results in "! Crm, Everywhere".
”ÙÁ,¥º!” # Compressed string which results in "Greetings, Planet!".
# Top of stack is implicitly outputted.
di "Greetings, Planet!"//"!tenalP ,sgniteerG" id
주석을 사용하지 않는 약간 더 긴 (53 바이트) 버전은 다음과 같습니다.
#d
di "Greetings, Planet!";"!tenalP ,sgniteerG" id
d#
#d [something]
;
[something]이 아닌 경우 구분 기호 (처음에는 캐리지 리턴)를 cr
변경하므로 첫 번째 명령은 구분 기호를로 변경 ;
하고 두 번째 명령 은 문자열을 인쇄하고 세 번째 명령 은 끝까지 계속됩니다. 왜 그런지 이것이 오류 (알 수없는 명령 "! tenalP, sgniteerG"또는 기타)를 던질 것이라고 추측했을 것입니다.
이 프로그래밍 언어는 질문이 게시 된 후에 작성되었지만이 질문에 대해서는 작성되지 않았습니다.
`!t?ÓP ,?Ä>ÎG`;`GÎ>Ä?, PÓ?t!`
마다 ?
은 인쇄 할 수없는 유니 코드 문자 (U + 0082, U + 000F, U + 000F 및 U + 0082)입니다.
재미있는 사실 : Japt가 한 달 더 일찍 출판 되었다면, 합법적으로이 도전에서 승리했을 것입니다.
'Greetings, Planet!'⍝'!tenalP ,sgniteerG'
APL에서는 마지막 값이 인쇄되고 램프 문자 (⍝)가 주석을 시작합니다.
proc unknown args {puts "Hello World!"}
}"!dlroW olleH" stup{ sgra nwonknu corp
설명 : TCL은 unknown
정의되지 않은 명령에 대한 호출이 발생 하면 전역 proc을 실행합니다 . 첫 번째 행은 해당 proc를 간단한 "hello world"프로그램으로 재정의합니다.
TCL의 인용 규칙은 매우 미묘합니다. 열린 중괄호는 다음에 일치하는 가까운 중괄호 까지 확장 된 인용 단어를 시작 하여 중첩 된 인용 단어를 허용합니다. 그렇지 않으면 중괄호는 일반 문자로 취급됩니다. 다섯 개 단어 : }"!dlroW olleH"
, stup{
, sgra
, nwonknu
와 corp
. 이름이 지정된 명령이 없습니다.}"!dlroW olleH"
된 이 정의되지 않았으므로 undefined
첫 번째 행 의 proc이 대신 호출됩니다.
비슷한 질문이 고대의 StackOverflow에 게시되었습니다. 이후 닫히고 삭제되었습니다. 이 답변 에서 뺨 TCL 샘플에서 내 솔루션을 혀로 사용했으며 이제 설명을 요청하는 주석을 받고 있으므로 여기에서 답변을 다시 작성하십시오.
이 프로그래밍 언어는 질문이 게시 된 후에 작성되었지만이 질문에 대해서는 작성되지 않았습니다.
"! tenalP, sgniteerG"Z "인사말, 행성!"
Z
STDOUT에 스택의 문자 출력 다.
GGreetings, Planet!.................,.................!tenalP ,sgniteerGG
중간 직전 상반부 는 오른쪽에 ,
추가 G
를 포함하여 리버스 인사말 문자열을 작성합니다 . 중간은 ,
그것을 떨어 뜨리고 나머지는 정식 "Hello / Greeting / whatever"프로그램입니다. 메시지에가 포함되어 있으므로 양쪽 끝에 추가 문자가 필요합니다 ,
. 왼쪽이 실행되고을 삭제합니다 s
. 두 ,
및 s
따라서 왼쪽 연결 점에 대한 교체의 필요 G
들. ,
오른쪽에 최종 문자열로 실행하지만 빌드되지 않습니다.
echo Greetings, Planet!||!tenalP ,sgniteerG ohce
ksh, zsh, yash, dash에서도 작동합니다. 그러나 tcsh는 아닙니다.
$ cat x.sh
echo Greetings, Planet!||!tenalP ,sgniteerG ohce
$ bash x.sh
Greetings, Planet!
$ ksh x.sh
Greetings, Planet!
$ zsh x.sh
Greetings, Planet!
$ yash x.sh
Greetings, Planet!
$ dash x.sh
Greetings, Planet!
$ tcsh x.sh
tenalP: Event not found.
$
print"Greetings, Planet!"--"!tenalP ,sgniteerG"tnirp
루아 터미널에서는 44 바이트입니다.
="Greetings, Planet!"--"!tenalP ,sgniteerG"=
=
터미널에서 필요하지 않으므로 2 바이트가 떨어져 있습니다. 나는 그것이 2015 년에 존재했다고 생각합니다.
"Greetings, Planet!"!tenalP ,sgniteerG"
"Greetings, Planet!" # push the string to the stack
! # output the TOS
tenalP ,sgniteerG" # throws an error and exits
python3 milkyway.py <path-to-code>