यह कोड-गोल्फ है ।
इस चुनौती में, हम " शूरवीरों और शूरवीरों " पहेली को हल करने वाले कार्यक्रमों / कार्यों को लिखेंगे ।
पृष्ठभूमि
आप खुद को एक द्वीप पर पाते हैं ... आदि ... द्वीप पर हर व्यक्ति को छोड़कर या तो आप एक शूरवीर या एक दास हैं ।
शूरवीर केवल सही बयान कर सकते हैं ।
गुलाम केवल गलत बयान दे सकते हैं।
मैं "बयान" को कठोरता से परिभाषित नहीं करना चाहता, लेकिन हम कहेंगे कि एक बयान कुछ भी है जो "सच" या "गलत" है। ध्यान दें कि यह विरोधाभासी वाक्यों को बाहर करता है।
इस चुनौती के प्रयोजनों के लिए, आप आइलैंडर्स के समूहों में आ रहे हैं; वे आपसे बयान करेंगे।
आपका काम यह निर्धारित करना है कि कौन नाइट है और कौन एक नॉव है।
इनपुट:
आपको (किसी भी उचित प्रारूप में) निम्नलिखित जानकारी दी जाएगी:
उपस्थित लोगों की सूची। उन्हें अपरकेस वर्णमाला "AZ" नाम दिया जाएगा। इसके द्वारा लगाए गए लोगों की संख्या की सीमा पार नहीं की जाएगी।
प्रत्येक व्यक्ति जो बयान देता है। इस बारे में महत्वपूर्ण विवरण के लिए नीचे देखें।
उत्पादन
आप तब (किसी भी उचित प्रारूप में) आउटपुट करेंगे जो प्रत्येक व्यक्ति है। उदाहरण के लिए, अगर खिलाड़ी थे A B C Dऔर Aएक शूरवीर थे, लेकिन बाकी सभी शूरवीर हैं, तो आप आउटपुट कर सकते हैं
A: 1
B: 0
C: 0
D: 0
महत्वपूर्ण विवरण:
अपरकेस वर्णमाला AZ AZ को संदर्भित करता है।
वर्ण
0(शून्य) और1(एक) क्रमशः एक "नाइट" और एक "नाइट" का उल्लेख करते हैं। (जब तक आप निर्दिष्ट करते हैं, तब तक आप किसी भी अन्य दो गैर AZ अक्षर कर सकते हैं)मौजूद प्रत्येक टापू किसी भी प्राकृतिक संख्या को बयान कर सकता है, या कुछ भी नहीं कहने का विकल्प चुन सकता है।
सामान्य तार्किक ऑपरेटरों को बयानों में इस्तेमाल किया जा सकता है ( IS *, AND, OR, NOT )। इसके शीर्ष पर, डी मॉर्गन के नियम और शर्तों का उपयोग किया जा सकता है। निम्नलिखित उदाहरण हैं कि उन्हें एक स्पोकन पहेली में कैसे प्रस्तुत किया जा सकता है और इसके बाद वे आपके प्रोग्राम में कैसे इनपुट कर सकते हैं।
(* एक अधिक तकनीकी नोट पर। "आईएस" ऑपरेटर वास्तव में नियंत्रण के रूप में उपयोग किया जाता है (जो कि एक तार्किक ऑपरेटर नहीं है)। जब मैं कहता हूं कि "ए एक नाइट है", मेरा वास्तव में मतलब है "ए सेट के सेट का एक सदस्य है। शूरवीर। "इस्तेमाल किया गया सच्चा ऑपरेटर '।' होगा। सरलता के लिए, हम इसके बजाय '=' का उपयोग करेंगे।)
मैं निम्नलिखित का उपयोग करता हूं (आप जो भी उपयोग कर सकते हैं, जब तक यह उचित और सुसंगत है):
^तथाvया=है~नहीं=>का तात्पर्यX:व्यक्ति X का दावा है कि ...
व्यक्ति Z निम्नलिखित में से किसी भी प्रकार के कथनों का संयोजन कर सकता है:
व्यक्ति Z का कहना है कि ...
व्यक्ति A एक नाइट है।
Z: A = 1व्यक्ति क्यू एक ज्ञात है।
Z: Q = 0मैं एक नाइट हूं।
Z: Z = 1पर्सन A एक नाइट है या पर्सन B एक नाइट है।
Z: ( A = 1 ) v ( B = 1)पर्सन C एक नाइट है और मैं एक शूरवीर हूं।
Z: ( C = 1 ) ^ ( Z = 0 )व्यक्ति आर एक नाइट नहीं है।
Z: ~( R = 1 )
इसके शीर्ष पर, इनपुट भी मॉर्गन के नियमों का उपयोग कर सकता है
यह सच नहीं है कि ए और पर्सन बी दोनों ही व्यक्ति नोज़ हैं
Z: ~( ( A = 0 ) ^ ( B = 0 ) )यह गलत है कि व्यक्ति A या व्यक्ति B एक नाइट है
Z: ~( ( A = 1 ) v ( B = 1) )
अंत में, सशर्त और उनकी उपेक्षा का उपयोग किया जा सकता है
अगर मैं एक नाइट हूं, तो व्यक्ति बी एक ज्ञात व्यक्ति है
Z: ( Z = 1 ) => ( B = 0 )यह सच नहीं है कि यदि व्यक्ति बी एक नाइट है, तो व्यक्ति सी एक ज्ञात व्यक्ति है।
Z: ~( ( B = 1 ) => ( C = 0 ) )
सशर्त पर नोट्स
अधिक जानकारी के लिए विकिपीडिया देखें ।
एक सशर्त कथन p => q का रूप लेता है , जहाँ p और q स्वयं कथन होते हैं। p "पूर्ववत्" है और q "परिणामी" है। यहाँ कुछ उपयोगी जानकारी है
किसी स्थिति का निषेध इस तरह दिखता है: ~ (p => q) p ^ ~ q के बराबर है
झूठे आधार का मतलब कुछ भी होता है। वह है: यदि p गलत है, तो कोई भी कथन p => q सत्य है, चाहे कोई भी क्यू हो। उदाहरण के लिए: "यदि 2 + 2 = 5 तो मैं स्पाइडरमैन हूं" एक सच्चा कथन है।
कुछ सरल परीक्षण के मामले
ये मामले निम्नलिखित फैशन में दिए गए हैं (1) हम भाषण में समस्या को कैसे हल करेंगे (2) हम इसे कंप्यूटर पर कैसे कर सकते हैं (3) सही आउटपुट जो कंप्यूटर दे सकता है।
व्यक्ति ए और व्यक्ति बी आपको सड़क पर आते हैं और निम्नलिखित बयान देते हैं:
A: B एक शूरवीर है या मैं शूरवीर हूं।
B: A एक नाइट है।
उत्तर:
B एक नाइट है और A एक नाइट है।
इनपुट:
A B # Cast of Characters
A: ( B = 0 ) v ( A = 1)
B: A = 1
आउटपुट:
A = 1 B = 1
व्यक्ति A, B और F सड़क पर आपसे संपर्क करते हैं और निम्नलिखित बयान देते हैं:
A: अगर मैं एक नाइट हूं, तो B एक नॉव है।
B: यदि यह सच है, तो F एक ज्ञात है।
उत्तर:
A एक नाइट है, B एक नाइट है, F एक नाइट है।
इनपुट
A B F
A: ( A = 1 ) => ( B = 0 )
B: ( A = 1 ) => ( F = 0 )
आउटपुट:
A = 1 B = 0 F = 1
Q, X और W सड़क पर आपसे संपर्क करते हैं और निम्नलिखित बयान देते हैं:
डब्ल्यू: यह सच नहीं है कि क्यू और एक्स दोनों शूरवीर हैं।
प्रश्न: यह सच है।
X: यदि W जो कहता है वह सत्य है, तो Q जो कहता है वह असत्य है।
उत्तर:
W और Q शूरवीर हैं। X एक ज्ञाता है।
इनपुट
Q X W
W: ~( ( Q = 1 ) ^ ( X = 1 ) )
Q: W = 1
X: ( W = 1 ) => ( Q = 0 )
उत्पादन
W = 1 Q = 1 X = 0
वहाँ एक है इसी तरह की चुनौती 3 साल पहले पार्स करने और सशर्त शामिल नहीं है या डी मॉर्गन के पर कि केंद्रित से। और इसलिए, मैं तर्क दूंगा कि यह डूप होने से बचने के लिए ध्यान और कार्यान्वयन में पर्याप्त है।
इस चुनौती को संक्षिप्त रूप से एक ठग के रूप में बंद कर दिया गया था। इसके बाद से इसे फिर से खोल दिया गया।
मेरा दावा है कि यह चुनौती, पहले बंद, फ़ोकस में अलग है। दूसरी चुनौती अंग्रेजी पार्सिंग पर केंद्रित है, यह नहीं है। दूसरा यह केवल AND और OR का उपयोग करता है जबकि यह सशर्त का उपयोग करता है और कई और पहेलियों को हल करने की अनुमति देता है। दिन के अंत में, सवाल यह है कि उस चुनौती से उत्तर दिया जा सकता है या नहीं, लेकिन इस शर्त को अनिवार्य रूप से प्रतिस्थापित किया जा सकता है, और मेरा मानना है कि सशर्त और सशर्त नकारात्मकता को शामिल करने से पर्याप्त जटिलता जुड़ जाती है, और अधिक मजबूत परिवर्तन करने की आवश्यकता होती है। इस चुनौती को पूरा करने के लिए।
OR, यह हो सकता है A:1 B:1या A:1 B:0क्योंकि बी B=1झूठी हो सकता है जबकि ए अभी भी सच होगा।
(B=1)^(C=1)कि सामान्य रूप से किस तरह से सशर्त रूप से निपटा जाता है
(B=1)=>(C=0)?~((B=1)=>(C=0))या(B=1)=>(C=1)कुछ और?