ความท้าทายนี้ถูกโพสต์เป็นส่วนหนึ่งของความท้าทาย LotM เมษายน 2018
Brain-Flakเป็นภาษา turing-tarpit ซึ่งได้รับชื่อเสียงอย่างมากใน PPCG ความทรงจำของภาษานั้นประกอบด้วยสองกอง แต่มีการค้นพบสแต็กที่สามที่ "ซ่อน" โดยWh e at Wizardซึ่งนำไปสู่วิธีคิดใหม่ที่น่าสนใจในการคิดโปรแกรม Brain-Flak
แล้วจะให้การมองเห็นที่ดีกว่านั้นในสแต็คที่สามได้อย่างไร มาสร้างภาษาที่สแต็กที่สามมีการจดจำที่สมควรได้รับ! นี่ฉันนำเสนอคุณสาม Flak
ภาษา
ใน Third-Flak มีเพียงหนึ่งกองที่เรียกว่ากองที่สาม ผู้ประกอบการทำงานในกองที่สามในลักษณะเดียวกับที่พวกเขาทำใน Brain-Flak แต่ที่นี่ไม่มี[]
, {}
, <>
nilads และไม่มี{...}
monad (เพื่อให้ตัวละครเท่านั้นที่ยอมรับในโปรแกรมที่สาม Flak มี()[]<>
) นี่คือสิ่งที่ผู้ประกอบการแต่ละรายทำ (ตัวอย่างจะได้รับการแทนสแต็กที่สามพร้อมกับรายการที่องค์ประกอบสุดท้ายคือด้านบนของสแต็ก):
()
เป็นโอเปอเรเตอร์สองอักขระเพียงตัวเดียวใน Third-Flak เพิ่มด้านบนของสแต็กที่สามโดย 1 ตัวอย่าง:[1,2,3]
→[1,2,4]
(
,[
,<
: ทุกวงเล็บเปิดที่ไม่ได้รับการคุ้มครองโดยกรณีก่อนหน้านี้ดัน0
ไปกองที่สาม ตัวอย่าง:[1,2,3]
→[1,2,3,0]
)
ดึงองค์ประกอบสองอย่างจากสแต็กที่สามและผลักกลับผลรวมของพวกเขา ตัวอย่าง:[1,2,3]
→[1,5]
]
ดึงสององค์ประกอบจากสแต็กที่สามและผลักผลลัพธ์การลบแรกออกจากองค์ประกอบที่สอง ตัวอย่าง:[1,2,3]
→[1,-1]
>
ดึงองค์ประกอบจากสแต็กที่สาม ตัวอย่าง[1,2,3]
→[1,2]
และนี่คือกฎอื่น ๆ ของภาษา:
ที่จุดเริ่มต้นของการดำเนินการสแต็กที่สามมีเพียง 0 เดียว
มันเป็นสิ่งต้องห้ามที่จะมีที่ว่างเปล่า
[]
หรือ<>
ในโปรแกรม (พวกเขาจะเป็น noops ต่อไปนี้ถ้าตามความหมายของ Third-Flak แต่จริง ๆ แล้วพวกเขามีความหมายที่แตกต่างกันใน Brain-Flak ที่เป็นไปไม่ได้ที่จะสร้างที่นี่)วงเล็บต้องมีความสมดุลเสมอยกเว้นความจริงที่ว่าวงเล็บปิดท้ายท้ายโปรแกรมอาจหายไป ตัวอย่างเช่น
[()<(()
เป็นโปรแกรม Third-Flak ที่ถูกต้อง (และสแต็กที่สามในตอนท้ายของโปรแกรมจะเป็น[1,0,1]
)โปรแกรมสามารถมีอักขระที่อนุญาตได้หกตัวเท่านั้น
()[]<>
เท่านั้น โปรแกรมมีการรับประกันว่าจะไม่ว่างเปล่า
หมายเหตุ: มันมีนัยโดยกฎก่อนหน้านี้ที่คุณไม่ต้องจัดการกับสถานการณ์ที่คุณจำเป็นต้องปรากฏขึ้นจากสแต็กที่ว่างเปล่า
ความท้าทาย
ง่ายเขียนล่ามสำหรับ Third-Flak โปรแกรมของคุณจะต้องใช้เป็นอินพุตโปรแกรม Third-Flak และกลับเป็นสถานะเอาต์พุตของสแต็กที่สามในตอนท้ายของโปรแกรม
รูปแบบผลลัพธ์ของคุณมีความยืดหยุ่นตราบเท่าที่เป็นไปได้ที่จะอ่านอย่างชัดเจนจากสถานะของสแต็กที่สามและหมายเลขเดียวกันจะถูกเข้ารหัสในแบบเดียวกันเสมอ (นี่เป็นเพียงวิธีบอกว่ารูปแบบเอาต์พุตใด ๆ พยายามโกงก็ดี)
ตัวเลือกผลลัพธ์ของคุณอาจ จำกัด ช่วงของตัวเลขที่คุณสามารถจัดการได้ตราบใดที่สิ่งนี้ไม่ได้เป็นการท้าทายเล็กน้อย (เนื่องจากเป็นช่องโหว่เริ่มต้น )
กรณีทดสอบ
สำหรับแต่ละกรณีทดสอบบรรทัดแรกคืออินพุตและบรรทัดที่สองสแต็กเอาท์พุทที่แสดงเป็นรายการที่คั่นด้วยช่องว่างของตัวเลขที่ด้านบนของสแต็กเป็นองค์ประกอบสุดท้าย
[()<(()
0 1 0 1
[((((()()()()()))
0 0 0 5
((([()][()][()])))
-3
[<<(((()()()())(((((
0 0 0 0 0 4 0 0 0 0 0
[()]<(([()])><[()]
-1 0 -1
(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(())(())(()())(())(())(())(()())(()()()())(())(()()()()())(()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(())(())(()())(())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(())(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(()()())(())(()()())(())(())(())(()())(()()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(())(())(())(()()())(())(())(())(()())(())(()())(()()()())(())(())(()()()()())(()())(()())(())(()()())(())(())(())(())(()()())(()())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(()()()()())(())(()()())(())(())(()())(())(()()()()())(())(()()()()())(())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()()()())(())(()()()()())(())(())(())(()())(())(()()()()())(())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()()()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(())(()())(()()()())(())(())(()())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(()()())(())(())(()())(())(())(()()()()())(()()()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(()()()())(()()()())(()()
718 2
[()]
จะทำผิดกฎที่เราไม่ต้องกังวลเกี่ยวกับการโผล่จากกองที่ว่างเปล่า