अमूर्त बीजगणित में कई महत्वपूर्ण विषयों में एक सेट पर एक बाइनरी फ़ंक्शन अभिनय होता है। ऐसे कार्यों के गुणों की संख्या को ऐसे विषयों की जांच में परिभाषित किया गया है।
आपकी चुनौती यह निर्धारित करने की होगी कि किसी दिए गए डोमेन पर दिए गए बाइनरी फ़ंक्शन में इनमें से पांच गुण हैं।
गुण
एक बाइनरी फ़ंक्शन बंद हो जाता है यदि डोमेन में हर संभव आउटपुट होता है।
एक बाइनरी फ़ंक्शन साहचर्य है यदि वह क्रम जिसमें फ़ंक्शन को इनपुट की एक श्रृंखला पर लागू किया जाता है, परिणाम को प्रभावित नहीं करता है। $
यदि (a $ b) $ c
हमेशा समान होता है, तो यह सहयोगी है a $ (b $ c)
। ध्यान दें कि चूंकि मूल्य (a $ b)
का उपयोग इनपुट के रूप में किया जाता है, इसलिए सहयोगी कार्य बंद होना चाहिए।
एक बाइनरी फ़ंक्शन सराहनीय है यदि इनपुट के क्रम को स्वैप करने से परिणाम नहीं बदलता है। दूसरे शब्दों में, यदि a $ b
हमेशा बराबर होता है b $ a
।
बाइनरी फ़ंक्शन में एक पहचान तत्व होता है यदि e
डोमेन में कुछ तत्व मौजूद होता है जैसे कि डोमेन में a $ e = a = e $ a
सभी a
के लिए।
एक द्विआधारी कार्य दो प्रकार के इनपुट के लिए इसे लागू करने के लिए उत्पादन के रूप में उस नंबर देता है, तो बेरोजगार है। दूसरे शब्दों में, यदि डोमेन में a $ a = a
सभी a
के लिए।
इनपुट
आपको मैट्रिक्स के रूप में एक फ़ंक्शन दिया जाएगा, और फ़ंक्शन का डोमेन नंबर होगा 0 ... n-1
, जहां n
मैट्रिक्स की साइड लंबाई है।
मूल्य (a $ b)
मैट्रिक्स में एन्कोडिंग है क्योंकि a
वें पंक्ति के b
वें तत्व के रूप में। यदि इनपुट मैट्रिक्स है Q
, तो a $ b
=Q[a][b]
उदाहरण के लिए, **
डोमेन पर प्रतिरूपण फ़ंक्शन ( पायथन में) [0, 1, 2]
निम्नानुसार एन्कोडेड है:
[[1, 0, 0]
[1, 1, 1]
[1, 2, 4]]
बाएँ और दाएँ डोमेन समान हैं, इसलिए मैट्रिक्स हमेशा चौकोर होगा।
आप इनपुट के रूप में किसी भी सुविधाजनक मैट्रिक्स प्रारूप का उपयोग कर सकते हैं, जैसे सूचियों की एक सूची, पंक्ति में एक सूची- या स्तंभ- प्रमुख क्रम, आपकी भाषा की मूल मैट्रिक्स ऑब्जेक्ट, आदि। हालाँकि, आप सीधे इनपुट के रूप में एक फ़ंक्शन नहीं ले सकते।
सादगी के लिए, मैट्रिक्स प्रविष्टियां सभी पूर्णांक होंगी। आप मान सकते हैं कि वे आपकी भाषा के मूल पूर्णांक प्रकार में फिट हैं।
उत्पादन
आप यह संकेत दे सकते हैं कि आपके द्वारा चुने गए किसी भी प्रारूप में उपरोक्त गुण कौन से हैं, जिसमें बूलियन्स की एक सूची शामिल है, प्रत्येक संपत्ति के लिए एक अलग चरित्र के साथ एक स्ट्रिंग, आदि, हालांकि, 24 संभावित सबसेट में से प्रत्येक के लिए एक अलग, अद्वितीय आउटपुट होना चाहिए। गुणों की। यह आउटपुट आसानी से मानव-पठनीय होना चाहिए।
उदाहरण
डोमेन n = 4 पर अधिकतम कार्य:
[[0, 1, 2, 3]
[1, 1, 2, 3]
[2, 2, 2, 3]
[3, 3, 3, 3]]
इस फ़ंक्शन में क्लोजर, एसोसिएटिविटी, कम्यूटेटिविटी, आइडेंटिटी और आइडम्पोटेंस के गुण होते हैं।
डोमेन n = 3 पर घातांक फ़ंक्शन
[[1, 0, 0]
[1, 1, 1]
[1, 2, 4]]
इस फ़ंक्शन में उपरोक्त गुणों में से कोई भी नहीं है।
डोमेन n = 3 पर अतिरिक्त कार्य:
[[0, 1, 2]
[1, 2, 3]
[2, 3, 4]]
इस फ़ंक्शन में कम्यूटिटी और पहचान के गुण हैं।
डोमेन n = 3 पर K कोम्बिनेटर:
[[0, 0, 0]
[1, 1, 1]
[2, 2, 2]]
इस फ़ंक्शन में क्लोजर, एसोसिएटिविटी और आइडम्पोटेंस के गुण हैं।
डोमेन n = 3 पर पूर्ण अंतर फ़ंक्शन:
[[0, 1, 2]
[1, 0, 1]
[2, 1, 0]]
इस फ़ंक्शन में क्लोजर, कम्यूटेटिविटी और पहचान के गुण हैं।
औसत फ़ंक्शन, यहां तक कि डोमेन n = 3 पर भी गोल है:
[[0, 0, 1]
[0, 1, 2]
[1, 2, 2]]
इस फ़ंक्शन में क्लोजर, कम्यूटेटिविटी, पहचान और बेरोजगारी के गुण हैं।
डोमेन n = 3 पर समानता कार्य:
[[1, 0, 0]
[0, 1, 0]
[0, 0, 1]]
इस फ़ंक्शन में क्लोजर और कम्यूटेटिविटी के गुण हैं।
चुनौती
यह कोड गोल्फ है। मानक खामियां लागू होती हैं। कम से कम बाइट्स जीतता है।
c=all(l>)
?