Sau khi tất cả các bài tập được gửi, một từ điển được tạo để ánh xạ số sinh viên vào hàm băm của tệp của họ.
Từ điển này, hoặc hashmap hoặc ánh xạ (bất cứ thứ gì ngôn ngữ của bạn gọi nó) sẽ trông như sau:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
Chìa khóa là số sinh viên và giá trị là hàm băm.
Nhiệm vụ của chúng tôi là chọn ra những kẻ gian lận! Những kẻ gian lận là những người có băm giống hệt nhau.
Đưa ra đầu vào {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
, hàm sẽ trả về (hoặc in) văn bản sau:
100 has identical files to 430
104 has identical files to 332
Lưu ý cách các tệp trong đó băm là duy nhất không được đề cập.
Ngoài ra, thứ tự rất quan trọng ở đây :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
nên trả lại (in) văn bản sau:
100 has identical files to 202,404
Không đúng khi in bất kỳ điều nào sau đây:
202 has identical files to 100,404
100 has identical files to 404, 202
Bạn nên in nó theo cách nó xuất hiện trong từ điển. Trong một số ngôn ngữ, việc đi qua một từ điển là ngẫu nhiên, vì vậy trong trường hợp đặc biệt này, bạn được phép thay đổi phương thức nhập liệu để bạn có thể đi qua nó theo cách có trật tự.
Thêm ví dụ:
{} # 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
Mã ngắn nhất sẽ thắng!
303 has identical files to [305, 606]
thay vì 303 has identical files to 305,606
?