विवरण
एक फ़ंक्शन लिखें जो f(m, G)
अपने तर्कों को मानचित्रण के रूप में स्वीकार करता है 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
आपको एक शब्दकोश बनाने की अनुमति है, तो क्या आप परीक्षण मामलों को भी शब्दकोश प्रदान कर सकते हैं?