หลังจากส่งการมอบหมายทั้งหมดพจนานุกรมจะถูกสร้างขึ้นเพื่อจับคู่หมายเลขนักเรียนกับแฮชของไฟล์
พจนานุกรมหรือ hashmap นี้หรือการจับคู่ (สิ่งที่ภาษาของคุณเรียกว่า) จะมีลักษณะดังนี้:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
กุญแจสำคัญคือหมายเลขนักเรียนและค่าคือแฮช
หน้าที่ของเราคือเลือกคนขี้โกง! คนขี้โกงคือคนที่มีแฮชเหมือนกัน
ได้รับการป้อนข้อมูลที่{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
ฟังก์ชั่นควรกลับ (หรือพิมพ์) ข้อความต่อไปนี้:
100 has identical files to 430
104 has identical files to 332
สังเกตว่าไฟล์ที่แฮชนั้นไม่เหมือนใคร
นอกจากนี้คำสั่งซื้อก็มีความสำคัญเช่นกัน:
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
ควรกลับ (พิมพ์) ข้อความต่อไปนี้:
100 has identical files to 202,404
มันเป็นความไม่ถูกต้องในการพิมพ์ใด ๆ ต่อไปนี้:
202 has identical files to 100,404
100 has identical files to 404, 202
คุณควรพิมพ์ในลักษณะที่ปรากฏในพจนานุกรม ในบางภาษาการอ่านพจนานุกรมเป็นแบบสุ่มดังนั้นในกรณีพิเศษนี้คุณได้รับอนุญาตให้เปลี่ยนวิธีการป้อนข้อมูลเพื่อให้คุณสามารถอ่านได้อย่างเป็นระเบียบ
ตัวอย่างเพิ่มเติม:
{} # prints nothing
{100: "ab", 303: "cd"} # prints nothing again
{100: "ab", 303: "cd", 404: "ab"}
100 has identical files to 404
{303: "abc", 304: "dd", 305: "abc", 405: "dd", 606: "abc"}
303 has identical files to 305,606
304 has identical files to 405
รหัสที่สั้นที่สุดชนะ!
303 has identical files to [305, 606]
แทน303 has identical files to 305,606
?