ใช้การข้ามเป็นเงื่อนไข
บางครั้งคุณจะปิดโปรแกรมการเขียนใน> <> ที่คุณต้องทำสิ่งต่าง ๆ เมื่อได้รับการป้อนข้อมูลที่แตกต่างกัน โดยปกติแล้วคุณจะใช้ conditionals ( ?
) และตัวเปลี่ยนทิศทางเพื่อแยกวิเคราะห์สิ่งนี้ ในบางกรณีมันใช้งานได้ดี (โดยเฉพาะเมื่อมีประเภทอินพุตที่จะจัดการน้อยลง) แต่บางครั้งคุณก็จบลงด้วยสิ่งที่มีลักษณะเช่นนี้ (ไม่ต้องสนใจความจริงที่ว่ารหัสนี้สามารถลดได้โดยใช้ลูกเล่นอื่นมันเป็นเพียงการสาธิต)
i:"a"=?v:"b"=?v"c"=?v>
.00n1< .00n2<.00n3<
ในขณะนี้เป็นเรื่องปกติ แต่ก็มีช่องว่างบางอย่าง (ซึ่งฉันไม่เคยชอบที่จะเห็น) และมีการทำซ้ำมาก ( =?v
และ.00n
) แทนที่จะเป็นเช่นนั้นคุณสามารถใช้การกระโดดและบรรทัดที่แตกต่างเป็นเงื่อนไขของคุณ นี่คือตัวอย่าง:
i:"a")$"b")+1+0$.>
v1
v2
v3
<.00n
วิธีนี้จะช่วยให้ประหยัด 10 ไบต์ นี่คือสิ่งที่เกิดขึ้น:
i:
เราทำซ้ำอินพุตหนึ่งครั้งเพื่อให้เราสามารถประเมินได้สองครั้ง
"a")$"b")+
นี่อาจเป็นเคล็ดลับของตัวเอง แต่สิ่งที่ฉันทำที่นี่คือการตรวจสอบเพื่อดูว่าอินพุตมากกว่าตัวอักษร "a" หรือไม่และถ้ามากกว่าอักขระ "b" และเพิ่มผลลัพธ์ สำหรับ "a" สิ่งนี้จะให้ผลเป็น 0 สำหรับ "b," 1 และสำหรับ "c," 2
1+0$.
นี่คือสิ่งที่เวทมนตร์เกิดขึ้น เรานำผลลัพธ์ของการทำให้เข้าใจง่ายก่อนหน้านี้และเพิ่ม 1 (ให้ 1 สำหรับ "a", 2 สำหรับ "b", 3 สำหรับ "c") จากนั้นกด 0 และสลับค่า เมื่อเราไปถึงการกระโดดสิ่งนี้จะย้ายไปที่บรรทัดที่สอดคล้องกับค่าที่เรากำหนดให้กับตัวละครเหล่านั้น (เช่นบรรทัดที่ 1 สำหรับ "a") NB Line 0 เป็นโปรแกรมอันดับต้น ๆ