परिचय
जीवन में आपका मिशन सरल है: इंटरनेट पर लोगों को गलत साबित करें!
ऐसा करने के लिए आप आमतौर पर उनके बयानों का सावधानीपूर्वक विश्लेषण करते हैं और उनमें विरोधाभास को इंगित करते हैं।
यह इसे स्वचालित करने का समय है, लेकिन जैसा कि हम आलसी हैं, हम कम से कम प्रयास (पढ़ें: सबसे छोटा कोड) के साथ लोगों को गलत साबित करना चाहते हैं।
विशिष्टता
इनपुट
आपका इनपुट सामान्य सामान्य रूप में एक सूत्र होगा । प्रारूप के लिए, आप नीचे दिए गए प्रारूप का उपयोग कर सकते हैं या अपनी स्वयं की परिभाषा दे सकते हैं, अपनी भाषा की जरूरतों पर (हालांकि आप शुद्ध CNF की तुलना में प्रारूप में अधिक सांकेतिक शब्दों में बदलना नहीं कर सकते हैं)। परीक्षण-मामले (यहां) हालांकि नीचे प्रारूप में दिए गए हैं (हालांकि यह बहुत मुश्किल नहीं होगा कि आप अपना खुद का सृजन करें)।
आपका इनपुट चर की एक सूची की एक सूची में आ जाएगा (आप इसे स्ट्रिंग के रूप में भी पढ़ सकते हैं / तार की आवश्यकता हो सकती है)। इनपुट क्लॉज़ेज़ के सेट के रूप में लिखे गए सामान्य सामान्य रूप (CNF) का एक सूत्र है , प्रत्येक दो सूचियों की सूची है। क्लॉज में पहली सूची पॉजिटिव शाब्दिक (वेरिएबल्स) को एनकोड करती है, दूसरी लिस्ट में नेगेटिव (निगेटिव) लिटरल (वैरिएबल) को एनकोड करती है। खण्ड में प्रत्येक चर एक साथ OR'ed है और सभी खंड एक साथ AND'ed हैं।
इसे स्पष्ट करने के लिए: इसे [[[A,B],[C]],[[C,A],[B]],[[B],[A]]]
पढ़ा जा सकता है:
(A OR B OR (NOT C)) AND (C OR A OR (NOT B)) AND (B OR (NOT A))
उत्पादन
आउटपुट बूलियन है, उदाहरण के लिए या तो कुछ सत्य मूल्य या कुछ मिथ्या मूल्य।
क्या करें?
यह सरल है: जांचें कि क्या हाथ में दिया गया फॉर्मूला संतोषजनक है, जैसे कि क्या सभी वेरिएबल्स के लिए सही और गलत के कुछ असाइनमेंट मौजूद हैं जैसे कि समग्र फॉर्मूला "सही" देता है। यदि फॉर्मूला सैटिस्फैक्टिव है और "असत्य" अगर यह नहीं है तो आपका आउटपुट "सही" होगा।
फन-फैक्ट: यह सामान्य मामले में एनपी-पूर्ण समस्या है।
नोट: ट्रुथ-टेबल बनाना और चेक करना कि क्या कोई परिणामी प्रविष्टि सत्य है, अनुमति है।
कॉर्नर केस
यदि आपको एक रिक्त 3-स्तरीय सूची मिलती है, तो उस खंड में ऐसा (सकारात्मक / नकारात्मक) वैरिएबल नहीं है - एक वैध इनपुट।
आप चाहें तो अन्य कोने के मामलों को अपरिभाषित छोड़ सकते हैं।
आप किसी खाली फॉर्मूले (प्रथम स्तर की सूची) पर भी वापस लौट सकते हैं और खाली खंड (2 स्तर की सूची) पर गलत हो सकते हैं।
किसी जीत?
यह कोड-गोल्फ है इसलिए बाइट्स जीत में सबसे छोटा जवाब है!
मानक नियम निश्चित रूप से लागू होते हैं।
परीक्षण के मामलों
[[[P],[Q,R]],[[Q,R],[P]],[[Q],[P,R]]] -> true
[[[],[P]],[[S],[]],[[R],[P]],[[U],[Q]],[[X],[R]],[[Q],[S]],[[],[P,U]],[[W],[Q,U]]] -> true
[[[],[P,Q]],[[Q,P],[]],[[P],[Q]],[[Q],[P]]] -> false
[[[P],[]],[[],[P,S]],[[P,T],[]],[[Q],[R]],[[],[R,S]],[[],[P,Q,R]],[[],[P]]] -> false
optional behavior (not mandatory, may be left undefined):
[] -> true (empty formula)
[[]] -> false (empty clause)
[[[],[]]] -> false (empty clause)
{{P,Q},{P,!Q},{!P,Q},{!P,!Q}}
(इस क्रम में नहीं) है जो आसानी से दिखाया जा सकता है एक विरोधाभास है। 4 के लिए): यह तुच्छ रूप से एक विरोधाभास है क्योंकि यह वह है P AND ... AND (NOT P)
जो स्पष्ट रूप से पी के किसी भी मूल्य के लिए सच नहीं हो सकता है
(A OR B OR (NOT C)) AND (C OR A OR (NOT B)) AND (B OR (NOT A))
?