मान लें मैं दो मनमाना सूचियों कि एक 3-जगह विधेय के पहले दो आइटम का प्रतिनिधित्व करते हैं:Prolog शुरुआती: रिवर्स सूची केवल एक बार
[anna,berta,charlotte],[charles,bob,andy]
मैं एक तीसरी सूची में हर आइटम (तीसरी आइटम का मिलान करना चाहते 3-प्लेस अनुमानित) निम्नानुसार है:
[[anna,andy],[berta,bob],[charlotte,charles]]
मूल रूप से आइटम अनुक्रमिक रूप से विपरीत फैशन में मेल खाते हैं। एक अनुक्रमिक तरीके से आइटम से मेल करने के लिए, मैं निम्नलिखित कोड तैयार किया है:
match([],[],[]).
match([A|At],[C|Ct],[[A,C]|Dt]):-match(At,Ct,Dt).
लेकिन यह मुझे देना होगा निम्नलिखित:
match([anna,berta,charlotte],[charles,bob,andy],X).
X=[[anna,charles],[berta,bob],[charlotte,andy]]
तो मैं किसी भी तरह दूसरी सूची उल्टा करने के लिए की जरूरत है। अब तक, मैंने कोड को निम्नानुसार बदल दिया है:
match([],[],[]).
match([A|At],[C|Ct],[[A,B]|Dt]):-reverse([C|Ct],[B|Bt]),match(At,Bt,Dt).
लेकिन यह लगातार प्रत्येक पास के साथ दूसरी सूची को उलट देगा।
match([anna,berta,charlotte],[charles,bob,andy],X).
X=[[anna,andy],[berta,charles],[charlotte,bob]]
प्रश्न:: मैं कैसे दूसरी सूची केवल एक बार रिवर्स ऐसा वास्तविक परिणाम वांछित लोगों से मेल खाते हैं, इस प्रकार परिणाम देखने के लिए चाहते हैं? या मेरा दृष्टिकोण मौलिक रूप से त्रुटिपूर्ण है? मैं प्रोलॉग के लिए नया हूं और वर्तमान में इस पर चिंतित हूं। किसी भी सहायता की सराहना की जाएगी।
रों (एक्स) स्वच्छ डेटा प्रतिनिधित्व। – repeat