Setelah semua tugas diserahkan, kamus dibuat yang memetakan nomor siswa ke hash file mereka.
Kamus ini, atau hashmap, atau pemetaan (apa pun bahasa Anda menyebutnya) akan terlihat sebagai berikut:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
Kuncinya adalah nomor siswa, dan nilainya adalah hash.
Tugas kita adalah untuk memilih curang! Curang adalah orang-orang yang memiliki hash identik.
Diberikan input {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
, fungsi harus mengembalikan (atau mencetak) teks berikut:
100 has identical files to 430
104 has identical files to 332
Perhatikan bagaimana file di mana hash unik tidak disebutkan.
Juga, urutannya penting di sini :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
harus mengembalikan (mencetak) teks berikut:
100 has identical files to 202,404
Tidak benar untuk mencetak salah satu dari yang berikut:
202 has identical files to 100,404
100 has identical files to 404, 202
Anda harus mencetaknya dalam hal bagaimana itu muncul dalam kamus. Dalam beberapa bahasa, membaca kamus adalah acak, jadi dalam kasus khusus ini, Anda diizinkan untuk mengubah metode input sehingga Anda dapat menjalaninya secara teratur.
Lebih banyak contoh:
{} # 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
Kode terpendek menang!
sumber
303 has identical files to [305, 606]
bukan303 has identical files to 305,606
?Jawaban:
JavaScript (Babel Node) , 113 byte
Mengambil input sebagai array array dalam
[key, value]
format. Go go gadget double flatMap!Cobalah online!
JavaScript (Babel Node) , 114 byte
Mengambil input sebagai objek JS asli.
Cobalah online!
sumber
flatMap
flatMap
belum didukung secara luas. Saya yakin ada cara yang lebih pendek, tetapi sudah larut dan saya tidak bisa berpikir lagi. : pPython 2 ,
127126 byteCobalah online!
Mengambil daftar pasangan yang dipesan
(<studentNumber>,<hash>)
sebagai input.sumber
if','in
Retina 0.8.2 , 71 byte
Cobalah online! Mengambil input pada baris yang berbeda tetapi tautan menyertakan test suite yang membagi contoh untuk Anda. Penjelasan:
Ulangi pertandingan ini sampai tidak ada lagi penggantian yang dapat dilakukan.
Cari pasangan hash yang cocok dan tambahkan kunci dari pertandingan kedua dengan pertandingan pertama dengan pemisah koma.
Hapus semua hash.
Hanya simpan garis dengan koma.
Ganti koma pertama pada setiap baris dengan teks yang diinginkan (termasuk spasi tambahan).
sumber
R ,
145132129126124 byteCobalah online!
Dibutuhkan vektor bernama sebagai input (nama adalah kunci)
Jika
", "
pemisah (dengan spasi setelah koma) diizinkan jika ada beberapa duplikat, kita dapat menggunakan kode ini dan menyimpan 10 byte:R , 114 byte
Cobalah online!
sumber
05AB1E , 34 byte
Cobalah online atau verifikasi semua kasus uji .
Penjelasan:
Lihat ini jawaban 05AB1E saya (bagian Cara menggunakan kamus? ) Untuk memahami mengapa
“ÿ€°Ê¼‡œ€„ “
adalah"ÿ has identical files to "
.sumber
Ruby ,
9896 byteCobalah online!
Mengambil input sebagai Ruby Hash, kembali dengan mencetak.
sumber
Jelly , 39 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 130 byte
Cobalah online!
Yang aneh tentang pertanyaan ini adalah bahwa contoh-contoh diberikan dalam format JSON sebagai pasangan kunci / nilai yang biasanya menyiratkan bahwa mereka tidak berurutan ... Dalam hal ini, urutan adalah penting. Karena itu, saya menggunakan daftar tupel untuk input dan daftar string sebagai output.
sumber
Perl 5, 100 +1 (-n) byte
Cobalah online!
sumber
Japt , 34 byte
Cobalah online!
Saat ini agak tidak konsisten dalam memesan garis, tetapi dalam garis itu output dengan benar. Jika garis-garis output perlu dalam urutan tertentu, itu akan membutuhkan beberapa byte lagi. Input hanyalah sebuah array
[id, hash]
berpasanganPenjelasan:
sumber
Perl 6 ,
115110103 byte-2 byte terima kasih kepada Jo King
Cobalah online!
Mengambil daftar Pasangan karena hash tidak tertata. Daftar daftar dua elemen akan menghemat beberapa byte tetapi tampaknya tidak otomatis. Mengembalikan daftar garis.
9588 byte jika urutan garis dalam hasil tidak masalah:Cobalah online!
sumber
.[1..*]
ke.skip