Python 3 / > <> , 177 173 172 167 ไบต์
ขอบคุณ @mathmandan สำหรับการลบ 5 ไบต์!
นี่เป็นประสบการณ์แล้วก็ลองดูด้วย ยินดีรับข้อเสนอแนะกอล์ฟตั้งแต่นี้ค่อนข้างยาว ฉันพยายามอย่างดีที่สุดเพื่อนำข้อความมาใช้ซ้ำ แต่มันค่อนข้างยาก
ในทางเทคนิคแล้วมันจะเป็น Python 3 ที่โปรแกรมนี้ควรจะส่งออก (และฉันสามารถเปลี่ยนได้ถ้าฉันไม่ตรงตามข้อกำหนด - แต่ในตัวอย่างที่แสดงรายการ Python / 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
คำอธิบาย (Python)
สำหรับด้านของงูหลามมันค่อนข้างง่าย นี่คือโค้ดที่เราสนใจ (โดยทั่วไปคือโค้ดที่ไม่มีความคิดเห็นซึ่งแสดงโดย a #
ใน Python) โปรดทราบว่าใน 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)
คำสั่งพิมพ์จึงประเมินว่า
"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
และนั่นควรเป็นคำอธิบาย แจ้งให้เราทราบหากมีความไม่สอดคล้องกันระหว่างคำอธิบาย / รหัสหรือถ้าฉันทำอะไรผิด ฉันเล่นกอล์ฟรหัสของฉันมากขึ้นในขณะที่ฉันกำลังเขียนคำอธิบายอยู่ดังนั้นฉันอาจมีรหัสเก่าและใหม่ผสมกันอยู่เล็กน้อย