मैं follwing prolog कार्यक्रम लिख रहा हूँ
जोड़ी ([], एक्स, [] )। जोड़ी ([एल 1], एक्स, [एल 2]): - एल 2 = (एल 1, एक्स)। जोड़ी ([एच 1 | एल 1], एक्स, [एच 2 | एल 2]): - जोड़ी (एल 1, एक्स, एल 2), एच 2 = (एच 1, एक्स)।
यह इसके लिए सही देता है:
जोड़ी ([1,2,3], ए, [(1, ए), (2, ए ), (3, एक)])।
और निम्नलिखित:
listOfPairs ([]): - [] ListOfPairs ([(एक्स, वाई) | एल]): - एच = (एक्स, वाई), सूचीओफ़पैरस (एल)।
जो सूची में मौजूद तत्व जोड़ते हैं, तो वह सही हो जाता है।
अब मेरे पास है:
जोड़ी ([a, 1 , डी], 2, एल), सूचीओफ़पैरस (एल)।
जो कि L = [(a, 2), (1, 2), (d, 2)]
और सूची जोड़े की रिटर्न सही होती है, हालांकि यह एक केवल एल लौटाता है। मैंने यह देखने के लिए ट्रेस का इस्तेमाल किया है कि क्यों काम नहीं करता, लेकिन यह वास्तव में मेरी मदद नहीं करता।
सबसे पहले, निम्नलिखित खंड को तय किया जाना चाहिए:
listOfPairs ([]): - []
यह GNU Prolog में विफल हो जाएगा क्योंकि [] / 0
मौजूदा मौजूदा नहीं है आप इसे इसे बदल सकते हैं:
listOfPairs ([])।
अगला, यदि आप कॉल करते हैं:
जोड़ी ([a, 1, d], 2, एल), सूचीओफ़पैरर्स (एल)
आपको (जीएनयू प्रोल में) मिलेगा:
एल = [(ए, 2), (1,2), (डी 2) ]? एक एल = [(ए, 2), (1,2), (डी, 2)] (1 एमएस) हाँ
इसका अर्थ है कि जोड़ी
सफल हुआ एल
के दिखाए गए मूल्य के साथ listOfPairs
के रूप में अच्छी तरह से सफल हुआ और पूरे खंड सफल हुआ (इस प्रकार yes
)।
यदि आप तब आप प्राप्त करते हैं: आपको SWI Prolog में कुछ समान दिखना चाहिए (आप इसका इस्तेमाल नहीं कर रहे हैं जिसका आप का उपयोग कर रहे हैं)। एल , आपको एक अन्य निजता की आवश्यकता है:
myCheck (एक्स, वाई): - जोड़ी (एक्स, वाई, एल), सूचीओफ़पैरस (एल)।
| ? - माईचेक ([ए, 1, डी], 2)। सच ? एक हाँ
Comments
Post a Comment