आपको लॉजिक स्टेटमेंट्स का एक सेट दिया जाता है। आपकी चुनौती किसी भी व्यक्ति को हटाने की है जो दूसरों के विपरीत है, लेकिन इष्टतम तरीके से (यानी कम से कम संख्या में बयानों को हटाते हुए)।
चुनौती
आप एक प्रोग्राम या एक फ़ंक्शन लिखेंगे जो इनपुट को बयानों की सूची के रूप में लेता है, कम से कम संख्या में बयान निकालता है जैसे कि एक समाधान होता है और बाकी को आउटपुट करता है।
तर्क
विवरण में उनके बीच चर A-Z और ऑपरेटर शामिल हैं।
5 ऑपरेटर हैं : -(नहीं), v(या), ^(और), ->(यदि) और <->(iff)।
सच्ची तालिका:
A | B | -A | AvB | A^B | A->B | A<->B
0 | 0 | 1 | 0 | 0 | 1 | 1
0 | 1 | 1 | 1 | 0 | 1 | 0
1 | 0 | 0 | 1 | 0 | 0 | 0
1 | 1 | 0 | 1 | 1 | 1 | 1
इन ऑपरेटरों को कोष्ठक के साथ एक साथ जोड़ा जा सकता है ():
A | B | -(AvB) | Av(-A) | A^(-A) | (AvB)->(-B)
0 | 0 | 1 | 1 | 0 | 1
0 | 1 | 0 | 1 | 0 | 0
1 | 0 | 0 | 1 | 0 | 1
1 | 1 | 0 | 1 | 0 | 0
तर्क प्रणालियों में 1 या अधिक कथन होते हैं ।
एक समाधान करने के लिए तर्क प्रणाली एक राज्य है जहां के सभी है बयान एक साथ सच है।
तर्क प्रणालियों के उदाहरण:
AvB
-(A<->B)
(AvB)->(-B)
एकमात्र समाधान है A = 1, B = 0।
A^B
-(B<->A)
इसका कोई हल नहीं है ; Aऔर Bदोनों के बयानों का कोई संयोजन सही नहीं है।
इनपुट
आपको इनपुट के रूप में बयानों का एक सेट प्राप्त होगा । इसे STDIN या फ़ंक्शन आर्गुमेंट्स के माध्यम से लिया जा सकता है, जो एक सरणी (एक सुविधाजनक प्रारूप में) या एक नईलाइन-अलग या अंतरिक्ष-पृथक स्ट्रिंग के रूप में स्वरूपित किया जाता है।
कथन निम्न रूप में होंगे (लगभग- ABNF में ):
statement = variable / operation
operation = not-operation / binary-operation
not-operation = "-" operand
binary-operation = operand binary-operator operand
operand = variable / "(" operation ")"
variable = "A"-"Z"
binary-operator = "v" / "^" / "->" / "<->"
उदाहरण कथन:
A
Av(-B)
(A<->(Q^C))v((-B)vH)
उत्पादन
आपको उनके द्वारा प्राप्त किए गए सटीक रूप में, संभवतः (संभवतः) कम किए गए कथनों को वापस करना होगा। फिर से, सूची को स्ट्रिंग्स की एक सरणी या एक नईलाइन-पृथक या अंतरिक्ष-पृथक स्ट्रिंग के रूप में स्वरूपित किया जा सकता है।
नियम
- आपको हमेशा बयानों की न्यूनतम संख्या को हटा देना चाहिए। यदि कई संभावित समाधान हैं, तो उनमें से एक का उत्पादन करें।
- आप मान सकते हैं कि इनपुट में हमेशा कम से कम 1 कथन होता है और इनपुट में कोई भी कथन दोहराया नहीं जाता है।
- आप यह नहीं मान सकते हैं कि आउटपुट में हमेशा एक बयान होता है। (उदाहरण देखें)
- आपके जवाब के मान्य होने के साथ मानक खामियों का विरोधाभास का उपयोग करना, और उनमें से एक को हटा दिया जाना चाहिए।
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
उदाहरण
इनपुट:
A^(-A)
आउटपुट:
(nothing)
इनपुट:
A^B A<->(-B) A<->B
आउटपुट:
A^B A<->B
इनपुट:
["AvB","A^B"]
आउटपुट:
["AvB","A^B"]
(AvB)->-Bहोना चाहिए (AvB)->(-B))
A<->(Q^C))v((-B)vHमिश-मैश्ड हैं।