(([][()]){[{}({}[({})])]{{}()(<()>)}{}([][()])}<>)
ลองออนไลน์!
เนื่องจากทุกคนกำลังโพสต์โซลูชั่น 50 ไบต์ที่นี่เป็นของฉัน (ฉันมี48 ไบต์แต่เป็นการดัดแปลง DjMcMayhem ง่าย ๆ ดังนั้นฉันรู้สึกว่ามันคุ้มค่าที่จะโพสต์)
คำอธิบาย
คำตอบนี้ใช้การยกเลิกค่าอย่างกว้างขวาง
Un-golfed ดูเหมือนว่า
([][()])({<{}({}[({})])>{<{}>()(<()>)}{}<([][()])>}<>)
ที่นี่เราคำนวณเดลต้าจนกว่าสแต็กจะมีหนึ่งรายการที่เหลือแต่ละครั้งที่เราสะสมหนึ่งค่าจากลูปด้านในหากเดลต้าไม่ใช่ศูนย์
นี่เป็นวิธีการทำตรงไปตรงมา
เพื่อให้กอล์ฟนี้เราเริ่มต้นการยกเลิกค่า อันแรกและอันที่ควรจะเห็นได้จากนักกอล์ฟที่มีสมองที่แข็งกระด้างคือความสูงของกอง มันเป็นความจริงที่รู้จักกันดีว่า
([])({<{}>...<([])>}{})
เป็นเช่นเดียวกับ
(([]){[{}]...([])}{})
เมื่อค่าถูกแก้ไขโดยหนึ่งค่าเดียวกันจะถูกเก็บไว้ สิ่งนี้ทำให้เรา
(([][()]){[{}]<({}[({})])>{<{}>()(<()>)}{}([][()])}<>)
คุณอาจสังเกตเห็นว่าสิ่งนี้ไม่ได้ช่วยให้เราประหยัดไบต์ แต่ไม่ต้องกังวลว่ามันจะมีประโยชน์มากขึ้นเมื่อเราดำเนินการต่อไป
เราสามารถดำเนินการลดลงอีกหากคุณเห็นคำสั่ง
<(...)>{<{}> ...
คุณสามารถลดได้จริง
[(...)]{{} ...
สิ่งนี้ทำงานได้เพราะถ้าเราเข้าสู่ลูป[(...)]
และ{}
จะยกเลิกและหากเราไม่ได้ค่า[(...)]
เป็นศูนย์ในตอนแรกและไม่จำเป็นต้องถูกยกเลิก เนื่องจากเรามีรูปแบบนี้เกิดขึ้นในรหัสของเราเราจึงสามารถลดได้
(([][()]){[{}][({}[({})])]{{}()(<()>)}{}([][()])}<>)
นั่นช่วยเราได้ 2 ไบต์ แต่มันยังใส่ negs สองตัวที่อยู่ติดกัน สิ่งเหล่านี้สามารถนำมารวมกันเพื่อช่วยเราอีก 2
(([][()]){[{}({}[({})])]{{}()(<()>)}{}([][()])}<>)
และนั่นคือรหัสของเรา
False
จะพิมพ์ออกมาแทนหรือไม่