説明
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、辞書であることを許可されている、あなたにも辞書としてテストケースを提供することができますか?