Deskripsi
Tulis fungsi f(m, G)yang menerima pemetaan sebagai argumen m, dan satu set / daftar bilangan bulat yang tidak negatif G.
mharus memetakan pasangan bilangan bulat Gke bilangan bulat baru di G. ( G, m) dijamin untuk membentuk grup abelian yang terbatas , tetapi elemen apa pun Gmungkin identitasnya.
Ada teorema penting yang mengatakan:
fharus mengembalikan daftar kekuatan utama [p1, ... pn]dalam urutan naik sedemikian rupa sehingga
Contohnya
f((a, b) → (a+b) mod 4, [0, 1, 2, 3])harus kembali[4], sebagai parameter menggambarkan kelompok Z 4 .f((a, b) → a xor b, [0, 1, 2, 3])harus kembali[2, 2], karena parameter menggambarkan grup isomorfik hingga Z 2 × Z 2 .f((a, b) → a, [9])harus kembali[], karena parameter menggambarkan kelompok sepele; yaitu, produk dari kelompok nol siklik.Tetapkan
msebagai berikut:(a, b) → (a mod 3 + b mod 3) mod 3 + ((floor(a / 3) + floor(b / 3)) mod 3) * 3 + ((floor(a / 9) + floor(b / 9)) mod 9) * 9Maka
f(m, [0, 1, ..., 80])harus kembali[3, 3, 9], karena grup ini isomorfik hingga Z 3 × Z 3 × Z 9
Aturan
mdapat berupa fungsi (atau penunjuk fungsi ke beberapa fungsi)Int × Int → Int, atau pemetaan kamus berpasanganG × Gdengan elemen baru dariG.fdapat mengambil parameternya dalam urutan yang berlawanan, yaitu Anda juga dapat menerapkanf(G, m).Implementasi Anda secara teoritis harus bekerja untuk input besar secara sewenang-wenang, tetapi sebenarnya tidak perlu menjadi efisien.
Tidak ada batasan untuk menggunakan built-in dalam bentuk apa pun.
Aturan standar kode-golf berlaku. Kode terpendek dalam byte menang.
Papan peringkat
Agar skor Anda muncul di papan tulis, itu harus dalam format ini:
# Language, Bytes
for a in G: for b in G: d[(a, b)] = m(a, b)).
AABC, memperlakukan mereka sebagai tiga kali lipat (A, B, C), dengan tambahan modulo berpasangan (9, 3, 3).
mdiizinkan menjadi kamus, dapatkah Anda memberikan kasus uji sebagai kamus juga?