8
เห็นภาพอัลกอริทึมแบบยุคลิด
อัลกอริทึมแบบยุคลิดเป็นอัลกอริทึมที่รู้จักกันอย่างกว้างขวางสำหรับการคำนวณตัวหารสามัญที่ยิ่งใหญ่ที่สุด (GCD) ของจำนวนเต็มบวกสองตัว อัลกอริทึม สำหรับจุดประสงค์ของการท้าทายนี้มีการอธิบายอัลกอริทึมดังต่อไปนี้: แสดงอินพุตสองตัวเป็นบรรทัดที่อยู่ติดกันของอักขระบางตัว เช่นอินพุตของ3,4สามารถแสดงด้วยบรรทัดที่อยู่ติดกัน000และ0000 เปลี่ยนlength(short_line)อักขระตัวแรกในบรรทัดที่ยาวขึ้นไปเป็นอีกตัวหนึ่งแล้วพูดว่า- มันดูเหมือน000และ---0 กำจัดlength(short_line)อักขระตัวแรกในบรรทัดที่ยาวขึ้น ตอนนี้000,0 ทำซ้ำขั้นตอนที่ 2 และ 3 จนกระทั่งทั้งสองมีความยาวเท่ากันโดยใช้สายสั้นและยาวหลังจากที่แต่ละซ้ำเช่น 000, 0 -00, 0 00, 0 -0, 0 0,0 คุณสามารถเลือกว่าจะหยุดที่นี่หรือทำซ้ำต่อและเปลี่ยนหนึ่งบรรทัดเป็นบรรทัดว่าง แต่ละขั้นตอนเหล่านี้ควรคั่นด้วยช่วงเวลาระหว่าง 0.3s ถึง 1.5s ความท้าทาย เขียนโปรแกรมที่ให้ตัวเลขธรรมชาติสองตัวเป็นอินพุตสร้างเอาต์พุตที่มีลักษณะเหมือนกับเอาต์พุตของอัลกอริทึมด้านบน คุณสามารถใช้อักขระ ASCII ที่ไม่ใช่แบบไวท์สเปซอื่นที่พิมพ์ได้0และและ-ให้สอดคล้องกันและใช้อักขระเพียงสองตัว นอกจากนี้คุณยังสามารถใช้อัลกอริธึมทางเลือกที่ให้ผลลัพธ์รวมถึงเวลาได้เช่นเดียวกับที่อัลกอริทึมข้างต้นสร้างขึ้น ตัวอย่าง นี่คือตัวอย่างของอินพุต24,35ซึ่งเป็น coprimes ดังนั้น GCD ของพวกเขาคือ 1 นี่คือตัวอย่างของอินพุต16,42ซึ่งมี GCD 2 กฎระเบียบ นี่คือรหัสกอล์ฟดังนั้นไบต์ที่สั้นที่สุดจึงชนะ ช่องโหว่มาตรฐานใช้ คุณสามารถสมมติว่าอินพุตเป็นจำนวนเต็มฐานสิบบวก …