तो हम आसानी से मिल जाती है और की तरह कुछ कर रही द्वारा Prolog में एक और परमाणु के साथ एक परमाणु की जगह ले सकता: मुझे यकीन है कि वहाँ भी ऐसा करने के लिए अन्य तरीके हैं रहा हूँगैर तुच्छ Prolog खोज और बदल
replace([],A,B,[]).
replace([H|T],A,B,[B|Result]) :-
H=A,
replace(T,A,B,Result),!.
replace([H|T],A,B,[H|Result]) :-
replace(T,A,B,Result).
।
हालांकि, मैं कंप्यूटिंग में तर्क में कुछ और जटिल करना चाहता हूं। आप केवल कुछ (x, y) के साथ तार्किक कथन में conj(x,y)
जैसे संयोजनों को बदलने की तरह कुछ कैसे करेंगे? तो यह फाइनल की तरह है और प्रतिस्थापित है लेकिन परमाणुओं के साथ नहीं। तो हमारे पास reduce(conj(conj(x,y),z)).
जैसा कुछ हो सकता है कि मैं ((x,y),z)
को कम करना चाहता हूं।
यह केवल संयोजन के साथ एक साधारण उदाहरण है, लेकिन यह संयोजन के मामले में मैं यही करना चाहता हूं। यदि कोई दिलचस्पी लेता है, तो यह वर्णनात्मक तर्क और झुकाव विधि के बारे में है।
मैं इस बारे में उलझन में हूं कि आप एक खोज करने और बदलने के लिए कैसे जाते हैं जब इनपुट वास्तव में एक सूची नहीं है; यह एक संरचना है। मैं नहीं देखता कि आप रिकर्सन और सूचियों के साथ मानक [H|T]
चाल का उपयोग किए बिना इसे कैसे हल कर सकते हैं। क्या किसी के पास कोई विचार है?
बहुत धन्यवाद।
प्रतिस्थापन/4 के बजाय पहले एच = ए के बाद कट क्यों न रखें? आपका कोड तेजी से चलेगा क्योंकि प्रोलॉग सिस्टम तब पता लगा सकता है कि प्रतिस्थापन/4 निर्धारक है। –