Stax , 11 ไบต์ (คะแนน 4)
'''cc'~~'dd
เรียกใช้และแก้ไขข้อบกพร่องออนไลน์!
ฉันรู้สึกเป็นเกียรติที่มีคำตอบแรก (ตามลำดับเวลา) สำหรับความท้าทายนี้ด้วยคะแนนที่สูงกว่าหรือเท่ากับ 4 บางทีคะแนนอาจสูงขึ้นแม้ว่า
ในสแตกซ์สตริงตัวอักษรที่ประกอบด้วยอักขระตัวเดียวจะถูกเขียนด้วย'ดังนั้นจึง'', 'c, 'd, '~เป็นตัวอักษรสตริงทั้งหมด คำสั่งที่สอดคล้องกันสำหรับc dและ~หมายถึงการทำซ้ำด้านบนของสแต็กหลักป๊อปอัพด้านบนของสแต็กหลักและป๊อปที่ด้านบนของสแต็กหลักและกดไปที่สแต็กอินพุตตามลำดับ สำหรับความท้าทายนี้อินพุตสแต็กไม่มีผลต่อเอาต์พุตและไม่สำคัญดังนั้นเราจึงสามารถพูดdและ~เหมือนกันได้
คำอธิบาย
เป็นการดีที่สุดที่จะแบ่งรหัสออกเป็นหลายส่วนและพิจารณาแยกต่างหาก
เมื่อมันไม่ได้ดัดแปลงกับ'''ccดันตัวอักษร'และตัวอักษรcที่จะสแต็คหลักและซ้ำด้านบนเพื่อให้สแต็คจะเป็น c,c,'(จากไปที่ด้านล่าง)
เมื่อไม่ได้ดัดแปลงให้'~~กดตัวอักษร~แล้วเปิดมัน (และดันไปที่อินพุตสแต็ก) ซึ่งโดยทั่วไปจะเป็นแบบไม่มี op สำหรับสแต็กหลัก
เมื่อไม่ได้รับการแก้ไขให้'ddกดตัวอักษรdแล้วเปิดขึ้นอีกครั้งหนึ่งไม่มีตัวเลือกสำหรับสแต็กหลัก
ในตอนท้ายของโปรแกรมเนื่องจากไม่มีการส่งออกอย่างชัดเจนด้านบนของสแต็กหลักจะถูกพิมพ์ออกมาโดยปริยาย
หากโปรแกรมทำงานตามที่เป็นกองสุดท้ายยังคงเป็นและออกจะc,c,'c
หากส่วนแรกจะกลายเป็น''ccแล้วเรามีตัวอักษรและสองคำแนะนำสำเนากองสุดท้ายจะเป็น' ',','ระบุว่าทั้งสองส่วนอื่น ๆ จะไม่มี-op, 'ผลจะเป็น
หากส่วนแรกกลายเป็น'''cผลลัพธ์จะเหมือนกันกับส่วนที่cไม่ได้รับการแก้ไข แต่จะไม่ซ้ำกัน c,'ดังนั้นสแต็คจะเป็น หลังจากที่ทั้งสองไม่มี-op cเป็นด้านบนของสแต็คเป็น
ดังนั้นเราสามารถตรวจจับรังสีในส่วนแรก
ส่วนที่สองและส่วนที่สามทำงานในลักษณะเดียวกัน ฉันจะเอาส่วนที่สามเป็นตัวอย่าง
หากส่วนที่สามถูกแก้ไขส่วนที่สองจะถูกเก็บไว้ตามเดิมและสแต็กก่อนที่จะเรียกใช้ส่วนที่สามคือ c,c,'
หากส่วนที่สามกลาย'dเป็นตัวอักษรdจะถูกผลักไปด้านบนของสแต็คหลักและไม่มีอะไรเพิ่มเติมจะทำ ด้านบนของสแต็กหลักคือตอนนี้dซึ่งจะถูกส่งออก
หากส่วนที่สามกลายเป็นddสององค์ประกอบจะถูกผุดขึ้นมาจากกองหลักและตอนนี้ด้านบนของสแต็คเป็น'และเป็นผลลัพธ์
ดังนั้นเราสามารถตรวจจับรังสีในส่วนที่สาม ด้วยเหตุผลเดียวกันเราสามารถตรวจจับรังสีในส่วนที่สอง