บทนำ
คุณเป็นอาชญากรที่ได้ขโมยแผนลับจาก Dejavu เทคโนโลยีใหม่ คุณแอบเข้าไปในกำแพงด้านหลัง แต่หาประตูที่ต้องใช้หมุดเปิด คุณรับรู้ถึงการล็อคและรู้ว่ามันใช้เวลา 5 พินโดยใช้ตัวเลขทั้งหมดจาก 0 ถึง 4 หลังจากป้อนแต่ละหลักแล้วการล็อคจะตรวจสอบ 5 หลักสุดท้ายที่ป้อนและเปิดหากรหัสถูกต้อง คุณต้องผ่านล็อคนี้และรวดเร็ว
ผลสรุปโดยย่อ
การเปลี่ยนแปลงคือการรวมกันที่เป็นไปได้ทั้งหมดของชุดของตัวเลข ตัวอย่างเช่นพีชคณิตทั้งหมดของตัวเลข 0, 1, 2 คือ:
012, 021, 102, 120, 201 และ 210
ถ้าเราต่อพีชคณิตทั้งหมดนี้เข้าด้วยกันเราจะได้ผลลัพธ์ที่ยอดเยี่ยม:
012021102120201210
superpermutation นี้มีพีชคณิตทั้งหมดเป็น 0, 1, 2 แต่เป็นไปได้ที่จะทำให้สั้นกว่านี้ ฉันจะข้ามไปนิดหน่อยที่นี่ แต่ superpermutation ที่สั้นที่สุดของตัวเลขเหล่านี้คือ:
012010210
สำหรับจุดประสงค์และจุดประสงค์ของเรานี่คือสตริงหลักที่สั้นที่สุดที่มีการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของตัวเลขเหล่านั้นนั่นคือ superpermutation
งาน
งานของคุณนั้นยากกว่าตัวอย่าง superpermutation ดังที่แสดงไว้ด้านบนเนื่องจากคุณมีตัวเลขอีกสองหลักที่ต้องกังวล - หากคุณยังไม่ได้อ่านเกี่ยวกับ superpermutations หรือตัวอย่างข้างต้นของฉันยังไม่ชัดเจนฉันขอแนะนำให้คุณอ่านบทความที่ยอดเยี่ยมจาก Patrick Honner ในเรื่องนี้ (ความท้าทายนี้ได้รับแรงบันดาลใจจากบทความของเขาดังนั้นขอชื่นชมเขา) https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/ เป้าหมายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดเท่าที่จะเป็นไปได้ซึ่งจะสร้างตัวเลขที่ยิ่งใหญ่ของตัวเลข 0 ถึง 4
เกณฑ์การให้คะแนน
โปรแกรมของคุณไม่รับอินพุตใด ๆ จากการเรียงลำดับใด ๆ และสร้าง superpermutation ของตัวเลขจาก 0 ถึง 4 ผลลัพธ์ที่ได้จะต้องพิมพ์ superpermutation ไปยังคอนโซลหรือแสดงให้ผู้ใช้เห็นอย่างชัดเจนตามขอบเขตที่คุณเลือก สิ่งนี้ไม่จำเป็นต้องเป็นการเปลี่ยนรูปแบบที่สั้นที่สุดเท่าที่จะเป็นไปได้ ด้วยเหตุนี้เป้าหมายคือการเขียนโปรแกรมที่สั้นที่สุดด้วย superpermutation ที่สั้นที่สุดดังนั้นคุณควรคำนวณคะแนนของคุณดังนี้:
ขนาดไฟล์ (ไบต์) * ความยาว superpermutation ที่สร้างขึ้น (หลัก)
ตัวอย่างเช่นถ้าฉันมีโปรแกรม 40 byte และ superpermutation ของฉันมีความยาว 153 หลักคะแนนของฉันจะเป็น:
40 * 153 = 6120
เช่นเคยเป้าหมายคือการได้รับคะแนนนี้ต่ำที่สุด
แบบ
นี่คือวิธีที่คุณควรโพสต์คำตอบของคุณ:
ภาษา | คะแนน
ลิงค์ไปยังรหัสในสภาพแวดล้อมการทำงาน (ถ้าเป็นไปได้)
code snippet
คำอธิบายรหัส ฯลฯ
Finalities
นี่เป็นหนึ่งในคำถามแรกของฉันในเว็บไซต์นี้ ดังนั้นโปรดบอกฉันว่าฉันไม่มีสิ่งใดหรือส่วนหนึ่งของความท้าทายของฉันไม่ชัดเจน ขอบคุณและสนุกกับการเล่นกอล์ฟ!