説明
f(m, G)
引数としてmapping m
、および明確な非負整数のセット/リストを受け入れる関数を作成しますG
。
m
の整数のペアG
をの新しい整数にマッピングする必要がありますG
。(G
、m
)は有限のアーベル群を形成することが保証されていますが、の任意の要素はG
恒等式である可能性があります。
次のような重要な定理があります。
f
[p1, ... pn]
次のような昇順で素数のリストを返す必要があります
例
f((a, b) → (a+b) mod 4, [0, 1, 2, 3])
返さなければならない[4]
パラメータは、グループ記述として、Z 4。f((a, b) → a xor b, [0, 1, 2, 3])
[2, 2]
パラメータはZ 2 ×Z 2に同型なグループを記述するため、返されるはずです。f((a, b) → a, [9])
[]
パラメータは自明なグループを記述するため、を返す必要があります。すなわち、ゼロの巡回グループの積。m
次のように定義します。(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) * 9
次に
f(m, [0, 1, ..., 80])
返す必要があり[3, 3, 9]
、このグループは、同形であるように、Z 3 ×Z 3 ×Z 9
ルール
m
は、関数(または関数への関数ポインタ)Int × Int → Int
、またはのG × G
新しい要素にペアをマッピングする辞書のいずれかですG
。f
反対の順序でパラメータを取ることができますf(G, m)
。実装は、任意の大きな入力に対して理論的に機能するはずですが、実際には効率的である必要はありません。
あらゆる種類の組み込みの使用に制限はありません。
標準のコードゴルフ規則が適用されます。バイト単位の最短コードが優先されます。
リーダーボード
ボードにスコアを表示するには、次の形式にする必要があります。
# Language, Bytes
for a in G: for b in G: d[(a, b)] = m(a, b)
)構築する方が簡単でしょう。
AABC
トリプルとして扱います。(A, B, C)
(9, 3, 3)
m
、辞書であることを許可されている、あなたにも辞書としてテストケースを提供することができますか?