14
Hardcoding the Cops and Robbers (โจร)
นี่เป็นความท้าทายของตำรวจและโจร กระทู้ Cops 'เพื่อความท้าทายนี้อยู่ที่นี่ คำถามที่น่าสนใจที่ต้องคิดคือต่อไปนี้: หากฉันมีลำดับตัวเลขฉันต้องระบุจำนวนเท่าใดก่อนที่จะชัดเจนว่าฉันกำลังพูดถึงลำดับใด ตัวอย่างเช่นถ้าฉันต้องการพูดคุยเกี่ยวกับจำนวนเต็มบวกตามลำดับที่เริ่มต้นจากฉันสามารถพูดได้แต่นั่นก็เพียงพอ1111,2,3,…1,2,3,…1,2,3, \dots ฉันมีวิธีหนึ่งในการตอบคำถามนี้และการเป็นนักกอล์ฟโค้ดมันเกี่ยวข้องกับการเขียนโค้ดกอล์ฟ คุณได้ให้เงื่อนไขของลำดับที่เพียงพอหากรหัสที่สั้นที่สุดที่สร้างคำเหล่านั้นสร้างเงื่อนไขทั้งหมดของลำดับ ถ้าเราคิดถึงเรื่องนี้ในแง่ของ code-golf นี่ก็หมายความว่าคุณได้เตรียมเคสทดสอบไว้เพียงพอแล้วเช่นว่ารหัสสั้นที่สุดที่ผ่านการทดสอบจะเป็นงานที่ต้องการ ท้าทาย ความท้าทายนี้เป็นตำรวจและโจรท้าทาย ในกรณีที่ตำรวจจะนำเสนอกรณีทดสอบและโจรจะต้องหาวิธีที่สั้นกว่าเพื่อหลอกกรณีทดสอบอื่น ๆ นอกเหนือจากลำดับที่ตั้งใจไว้ ตำรวจจะนำเสนอสิ่งต่อไปนี้: ชิ้นส่วนของรหัสที่ใช้จำนวนเต็มบวกเป็นอินพุตและสร้างจำนวนเต็มเป็นผลลัพธ์ รหัสนี้สามารถเป็นศูนย์หรือดัชนีหนึ่ง แต่ควรมีความชัดเจนว่าการจัดทำดัชนีคืออะไร รหัสนี้จะกำหนดลำดับของคุณ ข้อกำหนดแพลตฟอร์มหรือภาษาที่เกี่ยวข้องใด ๆ ที่อาจมีผลต่อเอาต์พุตตัวอย่างเช่นขนาดของ longint จำนวนพร้อมกับครั้งแรกแง่ของการลำดับตามที่คำนวณได้จากรหัส สิ่งเหล่านี้จะทำหน้าที่เป็น "กรณีทดสอบ"nnnnnnn โจรจะค้นหาโปรแกรมในภาษาเดียวกันที่สั้นกว่าที่นำเสนอและผ่านกรณีทดสอบทั้งหมด (สร้างเอาต์พุตเดียวกันสำหรับอินพุตแรกเป็นรหัสของตำรวจ) รหัสโม่งก็ต้องแตกต่างกันในการส่งออกจากโปรแกรมของตำรวจสำหรับจำนวนบางส่วนมีขนาดใหญ่กว่าnnnnnnnn เกณฑ์การให้คะแนน โจรจะได้คะแนนในจำนวนรอยแตกที่พวกเขาพบว่ามีรอยแตกมากขึ้นจะดีขึ้น คำตอบสามารถแตกอีกครั้งโดยการค้นหาคำตอบที่ถูกต้องสั้นกว่ารอยแตกเดิม หากคำตอบคือรอยร้าวเป็นครั้งที่สองจะให้คะแนนแก่แครกเกอร์ที่สองมากกว่าคำตอบ