งานของคุณคือการสร้างช่วงเวลาที่ยาวที่สุดวนซ้ำซึ่งความยาวของแต่ละโปรแกรมในลำดับนั้นล้อมรอบด้วย 500 ไบต์
นั่นคือถ้าคุณทำซ้ำขั้นตอนต่อไปนี้:
- เริ่มด้วยโปรแกรมเริ่มต้นของคุณ
- เรียกใช้โปรแกรมปัจจุบัน
- กลับไปที่ขั้นตอนที่ 2
ในที่สุดคุณจะกลับไปที่โปรแกรมดั้งเดิมของคุณ จำนวนโปรแกรมในรอบคือคะแนนของคุณซึ่งคุณพยายามเพิ่ม
ไม่มีโปรแกรมใดที่สามารถเพิ่มข้อผิดพลาดได้ แต่ละโปรแกรมจะต้องทำงานในลักษณะเดียวกันเช่นกัน (เช่นไม่มีเวอร์ชั่นที่แตกต่างกันการนำไปใช้งานตัวเลือกคอมไพเลอร์แพลตฟอร์ม ฯลฯ ... ) (แก้ไข: ใช่สถานะภายนอกใด ๆ เช่นที่ของเครื่องกำเนิดเลขสุ่มหลอกรวมอยู่ในที่สุด คำสั่งสถานะภายนอกจะต้อง "รีเซ็ต" หลังจากการเรียกใช้แต่ละครั้งหากคุณใช้ตัวเลขสุ่มจริงจะถือว่าเป็นกรณีที่เลวร้ายที่สุด)
สิ่งที่แยกความท้าทายนี้ออกจากรอบระยะเวลาที่ยาวที่สุดวนรอบควิน (นอกเหนือจาก 100 vs 500) คือทุกโปรแกรมในรอบนั้นจะต้องมี 500 ไบต์หรือน้อยกว่า ซึ่งหมายความว่ารอบที่ยาวที่สุดที่เป็นไปได้คือ (256 ^ 501 - 1) / 255 หรือน้อยกว่า แน่นอนว่าเป็นจำนวนมาก แต่ไม่มากในแง่ของจำนวนรหัสที่ใช้ในการคำนวณ ดังนั้นความท้าทายจึงเกี่ยวกับการใช้ความเป็นไปได้ (256 ^ 501 - 1) / 255 ให้มากที่สุดเท่าที่จะทำได้ไม่ใช่ความท้าทายในช่องคลอดที่ยุ่ง
โปรแกรมไม่ได้รับอนุญาตให้เข้าถึงซอร์สโค้ดของตัวเอง แต่โปรแกรมที่ว่างเปล่าจะได้รับอนุญาตให้ถ้าคุณต้องการ (ตราบเท่าที่คุณทำตามกฎระเบียบอื่น ๆ )
เนื่องจากการตรวจสอบโปรแกรมด้วยตนเองอาจเป็นเรื่องยากคุณอาจเข้าใจคะแนนโดยใช้วิธีการทางทฤษฎี คุณต้องรวมคำอธิบายของคะแนนและความถูกต้องกับโปรแกรมของคุณ หากคุณไม่สามารถหาคะแนนได้คุณอาจใช้ขอบเขตของโปรแกรมในวงรอบล่างแทนคะแนน defacto คุณได้รับอนุญาตให้อัปเดตสิ่งนี้เมื่อคุณพบว่าขอบเขตที่ต่ำกว่าดีกว่าหรือถ้าคุณพบคะแนนจริงแน่นอน
นี่เป็นรหัสที่ท้าทายคะแนนสูงสุดจึงชนะ!
แก้ไข: ขอแนะนำให้คุณเขียนสิ่งที่คะแนนของคุณอยู่ในสัญกรณ์ทางวิทยาศาสตร์เพื่อให้คำตอบที่เปรียบเทียบได้ง่ายขึ้น มันเป็นเรื่องปกติที่จะมีคะแนนในรูปแบบอื่นเช่นกันโดยเฉพาะอย่างยิ่งหากมีการเชื่อมต่อกับโปรแกรมของคุณอย่างชัดเจนยิ่งขึ้น นอกจากนี้ผู้อ่านควรที่จะแก้ไขคำตอบก่อนหน้าเพื่อให้สอดคล้องกับสิ่งนี้