Opis
Napisz funkcję, f(m, G)która przyjmuje jako argumenty odwzorowanie mi zestaw / listę odrębnych, nieujemnych liczb całkowitych G.
mpowinien mapować pary liczb całkowitych Gna nowe liczby całkowite w G. ( G, m) gwarantuje utworzenie skończonej grupy abelowej , ale dowolnym elementem Gmoże być tożsamość.
Istnieje ważne twierdzenie, które mówi:
fmusi zwrócić listę głównych mocy [p1, ... pn]w porządku rosnącym, tak aby
Przykłady
f((a, b) → (a+b) mod 4, [0, 1, 2, 3])powinien powrócić[4], ponieważ parametry opisują grupę Z 4 .f((a, b) → a xor b, [0, 1, 2, 3])powinien powrócić[2, 2], ponieważ parametry opisują grupę izomorficzną do Z 2 × Z 2 .f((a, b) → a, [9])powinien powrócić[], ponieważ parametry opisują trywialną grupę; tj. iloczyn zerowych grup cyklicznych.Zdefiniuj
mw następujący sposób:(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) * 9Następnie
f(m, [0, 1, ..., 80])powinien wrócić[3, 3, 9], ponieważ ta grupa jest izomorficzna do Z 3 × Z 3 × Z 9
Zasady
mmoże być funkcją (lub wskaźnikiem funkcji do jakiejś funkcji)Int × Int → Intlub parowaniem słownikaG × Gna nowe elementyG.fmoże przyjmować swoje parametry w odwrotnej kolejności, tzn. możesz także zaimplementowaćf(G, m).Twoje wdrożenie powinno teoretycznie działać dla dowolnie dużych nakładów, ale tak naprawdę nie musi być wydajne.
Nie ma żadnych ograniczeń dotyczących korzystania z jakichkolwiek wbudowanych funkcji.
Obowiązują standardowe zasady gry w golfa . Najkrótszy kod w bajtach wygrywa.
Tabela liderów
Twój wynik powinien pojawić się na tablicy, powinien mieć następujący format:
# Language, Bytes
for a in G: for b in G: d[(a, b)] = m(a, b)).
AABC, traktując je jako potrójne (A, B, C), z modulo dodawania parami (9, 3, 3).
mwolno ci być słownikiem, czy możesz podać przypadki testowe jako słowniki?