Trăn 3 / > <> , 177 173 172 167 byte
Cảm ơn @mathmandan đã cạo 5 byte!
Vâng, đây là một kinh nghiệm và cũng là một thử. Bất kỳ đề nghị golf đều được chào đón, vì điều này là khá dài. Tôi đã cố gắng hết sức để sử dụng lại văn bản, nhưng nó khá khó khăn.
Về mặt kỹ thuật, đó sẽ là Python 3 mà chương trình này sẽ xuất ra (và tôi có thể thay đổi nếu tôi không đáp ứng các thông số kỹ thuật - nhưng trong ví dụ đầu ra Python / C Python
đã được liệt kê).
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"~/
Hãy thử nó trên một thông dịch> <> trình thông dịch trực tuyến và trình thông dịch Python 3 ( trình thông dịch > <> yêu cầu bạn nhập mã theo cách thủ công)
Trả về
This program wasn't written in ><>, it was built for Python!
trong> <> và
This program wasn't written in Python, it was built for ><>!
trong Python.
Giải thích (Python)
Đối với khía cạnh Python, mọi thứ khá đơn giản. Đây là mã mà chúng tôi quan tâm (về cơ bản là mã không có nhận xét, được ký hiệu là bằng #
Python). Lưu ý rằng trong Python \
là một ký tự thoát khi được sử dụng trong chuỗi, vì vậy hãy \"
đánh giá "
trong chuỗi.
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)
Điều chúng tôi quan tâm nhất ở đây là các thao tác được thực hiện trên biến aa
:
aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)
Do đó, báo cáo in ước tính
"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"
Giải thích (> <>)
Bây giờ chúng ta đến phần khó khăn hơn. Một lần nữa, đây là mã với các bit không cần thiết được loại bỏ.
aa=" ni nettirw t'nsaw margorp sihT\"\
v "><>"r~/
a=", it was built for "+v \a
.4b;!?lor"!nohtyP r"~/
Dòng 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
Ngăn xếp ngay bây giờ (nếu được in): \This program wasn't written in
Dòng 2:
Lưu ý rằng dòng 2 bắt đầu tại /
vị trí của con trỏ từ dòng 1 và di chuyển từ phải sang trái.
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
Ngăn xếp ngay bây giờ: ><> ni nettirw t'nsaw margorp sihT
Dòng 3:
Giống như dòng trước, dòng này bắt đầu tại \
, đó là nơi dòng 2 gửi con trỏ. Lưu ý rằng bởi vì con trỏ quấn quanh dòng khi nó đến đầu tiên, a
tôi sẽ viết lời giải thích của mình theo thứ tự con trỏ đi đâu (và do đó, những gì được thực thi)
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
Ngăn xếp ngay bây giờ ( x
là ký tự được hình thành bằng cách thêm "r" và khoảng trắng. - đó không phải là ký tự thực tế, chỉ là một trình giữ chỗ từ tôi):
xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Dòng 4:
Con trỏ chỉ đơn giản tiếp tục đi xuống để dòng này đảm bảo không có lời giải thích thêm.
Dòng 5:
Bắt đầu từ /
và đi về bên trái.
.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)
Ngăn xếp ngay bây giờ (đầu ra đảo ngược):
!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Và đó nên là nó để giải thích. Hãy cho tôi biết nếu có bất kỳ mâu thuẫn nào giữa phần giải thích / mã hoặc nếu tôi làm gì sai; Tôi đã viết mã xuống một số mã nữa trong khi tôi đang viết lời giải thích để tôi có thể có các đoạn mã cũ và mã mới.