ระยะ Hammingระหว่างสองสายความยาวเท่ากันคือจำนวนของตำแหน่งที่สัญลักษณ์ที่สอดคล้องกันจะแตกต่างกัน
ให้P
เป็นสตริงไบนารีของความยาวn
และเป็นสตริงไบนารีของความยาวT
2n-1
เราสามารถคำนวณn
ระยะทาง Hamming ระหว่างP
และn
สตริงย่อยความยาวของทั้งหมดT
ตามลำดับจากซ้ายไปขวาและใส่ลงในอาร์เรย์ (หรือรายการ)
ตัวอย่างลำดับระยะทาง Hamming
ขอและP = 101
T = 01100
ลำดับของ Hamming 2,2,1
ระยะทางที่คุณได้รับจากคู่นี้คือ
คำจำกัดความของความใกล้ชิด
ทีนี้ลองพิจารณาลำดับของระยะทาง Hamming สองอย่าง พูดx = (0, 2, 2, 3, 0)
และy = (2, 1, 4, 4, 2)
เป็นตัวอย่าง เรากล่าวว่าx
และy
มีclose
ถ้าหรือถ้าy <= x <= 2*y
x <= y <= 2*x
นี่คือการคูณสเกลาร์และความไม่เท่าเทียมกันถูกนำมาเป็นองค์ประกอบ กล่าวคือสำหรับลำดับสองA
และB
, ดัชนีทั้งหมดA <= B iff A[i] <= B[i]
i
โปรดทราบว่าลำดับของระยะทาง Hamming สร้างลำดับบางส่วนภายใต้วิธีการเปรียบเทียบเหล่านี้ ในคำอื่น ๆ หลายคู่ลำดับไม่มากกว่าหรือเท่ากับหรือน้อยกว่าหรือเท่ากับซึ่งกันและกัน ตัวอย่างและ(1,2)
(2,1)
ดังนั้นการใช้ตัวอย่างข้างต้น(0, 2, 2, 3, 0) <= 2*(2, 1, 4, 4, 2) = (4, 2, 8, 8, 4)
แต่ไม่ได้มีขนาดใหญ่กว่า(0, 2, 2, 3, 0)
(2, 1, 4, 4, 2)
นอกจากนี้ยังไม่ได้มีขนาดเล็กกว่าหรือเท่ากับ(2, 1, 4, 4, 2)
2*(0, 2, 2, 3, 0) = (0, 4, 4, 6, 0)
เป็นผลให้x
และy
ไม่ใกล้กัน
งาน
สำหรับการเพิ่มการn
เริ่มต้นที่n=1
พิจารณาคู่เป็นไปได้ทั้งหมดของสตริงไบนารีP
ของความยาวn
และความยาวT
2n-1
มี2^(n+2n-1)
คู่ดังกล่าวและด้วยเหตุนี้จึงมีหลายลำดับของระยะทาง Hamming อย่างไรก็ตามลำดับเหล่านั้นจำนวนมากจะเหมือนกัน ภารกิจคือการหาขนาดของลำดับระยะทางของ Hamming ที่ใหญ่ที่สุดเพื่อให้ไม่มีสองลำดับที่อยู่ใกล้กัน
n
รหัสของคุณควรส่งออกจำนวนหนึ่งต่อมูลค่าของ
คะแนน
คะแนนของคุณกำลังพูดn
ถึงรหัสสูงสุดของคุณในเครื่องของฉันใน 5 นาที (แต่อ่านต่อ) n
ระยะเวลาเป็นเวลาการทำงานรวมเวลาไม่เพียงแค่นั้น
เพื่อให้คะแนนสำหรับคำตอบที่ไม่เหมาะสมเพราะการหาคำตอบที่ดีที่สุดน่าจะยากเราจะต้องมีระบบการให้คะแนนเล็กน้อย คะแนนของคุณคือมูลค่าสูงสุดn
ที่ไม่มีใครโพสต์คำตอบที่ถูกต้องสูงขึ้นสำหรับทุกขนาดที่เล็กกว่านี้ ตัวอย่างเช่นถ้าคุณเอาท์พุท2, 4, 21
และเอาท์พุทของคนอื่น2, 5, 15
แล้วคุณจะให้คะแนนเป็นคนอื่นมีคำตอบที่ดีสำหรับ1
n = 2
หากคุณส่งออก2, 5, 21
คุณจะได้คะแนน3
ไม่ว่าใครจะได้ผลลัพธ์ใดเพราะคำตอบเหล่านั้นดีที่สุด เห็นได้ชัดว่าถ้าคุณมีคำตอบที่ดีที่สุดแล้วคุณจะได้รับคะแนนสูงสุดสำหรับการn
โพสต์ อย่างไรก็ตามแม้ว่าคำตอบของคุณจะไม่เหมาะสมคุณก็ยังสามารถได้คะแนนถ้าไม่มีใครสามารถเอาชนะได้
ตัวอย่างคำตอบและตัวอย่างการทำงาน
(คำตอบนี้ยังไม่ถูกตรวจสอบการตรวจสอบอิสระจะได้รับสุดซึ้ง)
ขอบคุณ ETHproductions:
- n = 1 ให้ 2
- n = 2 ให้ 5
- n = 3 ให้ 21
ลองดูn = 2
รายละเอียดเพิ่มเติม ในกรณีนี้รายการลำดับระยะทางของ Hamming ทั้งหมด (แสดงโดย tuples ที่นี่) คือ:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
เราจะเห็น(0,0)
ได้ว่าไม่ได้อยู่ใกล้กับ tuple อื่น ๆ ในความเป็นจริงถ้าเราใช้เวลา(0, 0)
, (0, 1)
, (1, 0)
, (2, 1)
, (1,2)
แล้วไม่มี tuples ผู้ที่อยู่ใกล้กับคนอื่น ๆ นี้จะช่วยให้คะแนนของสำหรับ5
n = 2
สำหรับn = 3
รายการทั้งหมดของลำดับระยะทาง Hamming ที่แตกต่างกันคือ:
[(0, 0, 0), (0, 0, 1), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 1), (0, 2, 2), (0, 2, 3), (0, 3, 0), (0, 3, 1), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 1, 0), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 0), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 0), (1, 3, 1), (1, 3, 2), (2, 0, 1), (2, 0, 2), (2, 0, 3), (2, 1, 0), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 0), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3), (3, 0, 2), (3, 0, 3), (3, 1, 0), (3, 1, 1), (3, 1, 2), (3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 3, 2), (3, 3, 3)]
ใน48
ลำดับเหล่านั้นเราสามารถเลือกชุดของขนาด21
เพื่อให้ไม่มีคู่ในชุดนั้นใกล้กัน
ภาษาและห้องสมุด
คุณสามารถใช้ภาษาและไลบรารีใด ๆ ที่คุณต้องการ หากเป็นไปได้จะเป็นการดีที่จะสามารถเรียกใช้รหัสของคุณได้ดังนั้นโปรดระบุคำอธิบายโดยละเอียดเกี่ยวกับวิธีเรียกใช้ / รวบรวมรหัสของคุณใน Linux หากเป็นไปได้
My Machineการจับเวลาจะทำงานบนเครื่อง 64 บิตของฉัน นี่คือการติดตั้ง Ubuntu แบบมาตรฐานที่มี 8GB RAM, AMD FX-8350 Eight-Core Processor และ Radeon HD 4250 นี่หมายความว่าฉันต้องสามารถเรียกใช้รหัสของคุณได้
คำตอบชั้นนำ
- คะแนน4สำหรับ 2, 5, 21, 83, 361 โดย Christian Sievers C ++
- คะแนน5สำหรับ 2, 5, 21, 83, 372 โดย fəˈnɛtɪk จาวาสคริ