दो बाइनरी चर, ए और बी के लिए 16 अलग-अलग बूलियन कार्य हैं :
A B | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | F14 | F15
-----------------------------------------------------------------------------------------
0 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1
0 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1
1 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1
1 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1
ऑपरेटर से कम <
, जिसे सामान्य रूप से तर्क ऑपरेटर के रूप में नहीं सोचा जाता है, जैसे कि, और, या, वास्तव में इन कार्यों में से एक है (एफ 4) जब बूलियन मूल्यों पर लागू किया जाता है:
A B | A < B
-----------
0 0 | 0
0 1 | 1
1 0 | 0
1 1 | 0
दिलचस्प बात यह है कि हम उन 15 अन्य कार्यों में से किसी का भी अनुकरण कर सकते हैं जिसमें केवल प्रतीक होते हैं ()<AB10
। इन अभिव्यक्तियों का मूल्यांकन और मूल्यांकन वैसे ही किया जाता है जैसे वे कई मानक प्रोग्रामिंग भाषाओं में होते हैं, उदाहरण के लिए कोष्ठक का मिलान <
होना चाहिए और इसके दोनों ओर तर्क होने चाहिए।
विशेष रूप से, इन अभिव्यक्तियों को निम्नलिखित व्याकरण ( बैकस-नौर फॉर्म में दिए गए ) के साथ पालन करना होगा :
element ::= A | B | 1 | 0
expression ::= element<element | (expression)<element | element<(expression) | (expression)<(expression)
इसका मतलब है कि बेकार पेरेथेस और फॉर्म के अभिव्यक्तियों की A<B<1
अनुमति नहीं है।
तो अभिव्यक्ति A<B
फ़ंक्शन F4 से मेल खाती है, और A<B<1
इसे (A<B)<1
या तो बदलना चाहिए A<(B<1)
।
यह साबित करने के लिए कि सभी 15 अन्य कार्यों को अभिव्यक्तियों में बदला जा सकता है, यह अभिव्यक्तियों का एक समूह बनाने के लिए पर्याप्त है जो कार्यात्मक रूप से पूरा हो , क्योंकि तब, परिभाषा के अनुसार, उन्हें किसी भी फ़ंक्शन के लिए अभिव्यक्तियों में बनाया जा सकता है।
भावों का ऐसा एक समूह x<1
(जहाँ x
है A
या है B
), जो है ¬x
, और (((B<A)<1)<A)<1
जो है A → B
। ऋणात्मक ( ¬
) और निहितार्थ ( →
) कार्यात्मक रूप से पूर्ण होने के लिए जाने जाते हैं ।
चुनौती
वर्णों का उपयोग करते हुए ()<AB10
, ऊपर वर्णित रूप में 16 अभिव्यक्तियों को लिखें जो 16 अलग-अलग बूलियन कार्यों में से प्रत्येक के बराबर हैं।
लक्ष्य प्रत्येक अभिव्यक्ति को यथासंभव छोटा बनाना है। आपका स्कोर आपके प्रत्येक 16 भावों में वर्णों की संख्या का योग है। सबसे कम स्कोर जीतता है। टाईब्रेकर जल्द से जल्द जवाब देता है (बशर्ते कि वे अपने जवाब को बाद में किसी और से लिए गए छोटे भावों के साथ संपादित न करें)।
इस प्रतियोगिता के लिए आपको तकनीकी रूप से कोई वास्तविक कोड लिखने की आवश्यकता नहीं है, लेकिन यदि आपने भाव उत्पन्न करने में मदद करने के लिए कोई प्रोग्राम लिखा है, तो आपको उन्हें पोस्ट करने के लिए अत्यधिक प्रोत्साहित किया जाता है।
आप इस स्टैक स्निपेट का उपयोग यह जांचने के लिए कर सकते हैं कि आपके भाव क्या उम्मीद करते हैं: