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