Beschreibung
Schreiben Sie eine Funktion f(m, G), die als Argumente eine Zuordnung mund eine Menge / Liste unterschiedlicher, nicht negativer Ganzzahlen akzeptiert G.
msollte Paare von ganzen Zahlen Gauf neue ganze Zahlen in abbilden G. ( G, m) bildet garantiert eine endliche abelsche Gruppe , aber jedes Element von Gkann die Identität sein.
Es gibt einen wichtigen Satz, der besagt:
fmuss eine Liste der Hauptmächte [p1, ... pn]in aufsteigender Reihenfolge zurückgeben, so dass
Beispiele
f((a, b) → (a+b) mod 4, [0, 1, 2, 3])sollte zurückkehren[4], da die Parameter die Gruppe Z 4 beschreiben .f((a, b) → a xor b, [0, 1, 2, 3])sollte zurückkehren[2, 2], da die Parameter eine Gruppe beschreiben, die zu Z 2 × Z 2 isomorph ist .f((a, b) → a, [9])sollte zurückkehren[], da die Parameter die triviale Gruppe beschreiben; dh das Produkt von null cyclischen Gruppen.Definieren Sie
mwie folgt:(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) * 9Dann
f(m, [0, 1, ..., 80])sollte zurückkehren[3, 3, 9], da diese Gruppe isomorph zu Z 3 × Z 3 × Z 9 ist
Regeln
mkann entweder eine Funktion (oder ein Funktionszeiger auf eine Funktion)Int × Int → Intoder ein Wörterbuch sein, das PaareG × Gauf neue Elemente von abbildetG.fkann seine Parameter in umgekehrter Reihenfolge annehmen, dh Sie können auch implementierenf(G, m).Ihre Implementierung sollte theoretisch für beliebig große Eingaben funktionieren, muss jedoch nicht effizient sein.
Es gibt keine Einschränkung für die Verwendung von integrierten Funktionen jeglicher Art.
Es gelten die Standardregeln für Code-Golf . Der kürzeste Code in Bytes gewinnt.
Bestenliste
Damit Ihre Partitur an der Tafel erscheint, sollte sie das folgende Format haben:
# Language, Bytes
for a in G: for b in G: d[(a, b)] = m(a, b)).
AABCund behandelt sie als Dreifache (A, B, C)mit paarweiser Addition modulo (9, 3, 3).
mes sich um ein Wörterbuch handelt, können Sie die Testfälle auch als Wörterbücher bereitstellen?