파이썬 3 / > <> , (177) 173 172 167 바이트
5 바이트를 줄인 @mathmandan에게 감사드립니다!
글쎄, 이것은 경험이자 시도하는 경험이었습니다. 꽤 긴 골프 제안은 환영합니다. 나는 텍스트를 재사용하기 위해 최선을 다했지만 매우 어려웠다.
기술적으로,이 프로그램이 출력 해야하는 것은 Python 3 일 것입니다 (사양을 충족시키지 않으면 서 파이썬 / C 출력 예제 Python
에 나열된 경우 변경할 수 있음 ).
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!" #v "><>"r~/
a=", it was built for "+v#\a
print(aa[-3::-1]+"Pytho" +"n"+a)
# .4b;!?lor"!nohtyP r"~/
온라인> <> 인터프리터 및 Python 3 인터프리터 에서 시도하십시오 (> <> 인터프리터는 코드를 수동으로 입력해야합니다)
보고
This program wasn't written in ><>, it was built for Python!
> <>에서
This program wasn't written in Python, it was built for ><>!
파이썬에서.
설명 (파이썬)
파이썬의 경우에는 매우 간단합니다. 관심있는 코드는 다음과 같습니다 (기본적으로 주석이없는 코드 #
는 Python으로 표시됨 ). 파이썬 \
에서는 문자열에서 사용될 때 이스케이프 문자이므로 문자열에서 \"
평가됩니다 "
.
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)
여기서 가장 중요한 것은 변수에 대해 수행되는 작업입니다 aa
.
aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)
따라서 print 서술문은
"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"
설명 (> <>)
이제 우리는 더 어려운 부분에 도달합니다. 다시 한번, 불필요한 비트가 제거 된 코드가 있습니다.
aa=" ni nettirw t'nsaw margorp sihT\"\
v "><>"r~/
a=", it was built for "+v \a
.4b;!?lor"!nohtyP r"~/
1 행 :
aa=" ni nettirw t'nsaw margorp sihT\"\
aa= pushes 1 onto the stack (evaluates 10==10, basically)
" ni ... \" pushes the first part plus a \ onto the stack.
\ deflects the pointer downwards
현재 스택 (인쇄 된 경우) : \This program wasn't written in
2 행 :
2 /
행은 1 행의 포인터 위치 때문에 시작하여 오른쪽에서 왼쪽으로 이동합니다.
v "><>"r~/
/ deflects the pointer leftwards
~r pops the / off the stack and then reverses it
"><>" pushes ><> onto the stack
v deflects the pointer downwards
지금 스택 : ><> ni nettirw t'nsaw margorp sihT
3 행 :
이전 행과 마찬가지로이 \
행은 2에서 포인터를 보내는 곳 에서 시작 합니다. 포인터가 첫 줄에 도달하면 줄을 감싸기 때문에 a
포인터가 어디로 가며 (따라서 실행되는지) 순서대로 설명을 작성합니다.
a=", it was built for "+v \a
\aa= deflect and push 1 onto the stack
", i ... " push the string onto the stack
+v sum the last two values pushed and deflect
현재 스택 x
은 "r"과 공백을 추가하여 형성된 문자입니다. 실제 문자가 아니며 자리 표시 자입니다.
xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
4 행 :
포인터는 아래쪽으로 계속 이어 지므로이 줄은 더 이상 설명 할 필요가 없습니다.
5 행 :
시작하여 /
왼쪽으로 이동
.4b;!?lor"!nohtyP r"~/
~"r Python!" pops x off and adds back r and a space
r reverses the stack
o pops and prints a character
l?!; pushes the length of the stack and stops if it's 0
b4. pushes 11 then 4 then moves to that location (where o is)
지금 스택 (출력이 반대로 됨) :
!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
그리고 그것은 설명을위한 것이어야합니다. 설명 / 코드 사이에 불일치가 있거나 내가 잘못한 경우 알려주십시오. 설명을 작성하는 동안 코드를 조금 더 축소하여 오래된 코드와 새 코드를 혼합했을 수 있습니다.