2011-11-19 11 views
7

मैं प्रोलॉग सीखने की कोशिश कर रहा हूं, और मैं अनुमान लगाता हूं कि भविष्य में क्या() करता है। मुझे लगता है कि यह अक्सर इस्तेमाल होता है और इंटरनेट पर प्रोलॉग के बारे में बहुत कम संसाधन हैं कि मुझे कोई जवाब नहीं मिल रहा है।प्रोलॉग में एस() भविष्यवाणी क्या करता है?

पूर्व।

/* sum(Is,S) is true if S is the sum of the list of integers Is.   */ 
    sum([],0). 
    sum([0|Is],S):-sum(Is,S). 
    sum([s(I)|Is], s(Z)):-sum([I|Is],Z). 
+0

प्रोलॉग दुभाषिया का आप किस संस्करण का उपयोग करते हैं? –

+0

मैं उपयोग करता हूं: एसडीआई-प्रोलॉग संस्करण 5.10.1 amd64 – okin33

उत्तर

14

s/1 अपने आप में कुछ भी नहीं करता है, और यह वास्तव में एक अनुमान नहीं है। वे सिर्फ शब्दों हैं, उनके तर्क के उत्तराधिकारी का प्रतिनिधित्व। इसलिए, s(0) का उपयोग 0 (यानी 1) के उत्तराधिकारी का प्रतिनिधित्व करने के लिए किया जाता है, s(s(0))s(0) (यानी 2) के उत्तराधिकारी का प्रतिनिधित्व करने के लिए उपयोग किया जाता है, और इसी तरह से आगे। वे प्रोलॉग में इतने व्यापक हैं क्योंकि प्रोलॉग प्रतीकात्मक गणना करने के लिए एक भाषा है, जबकि सरल अंकगणितीय परिचालन भी कठोर महसूस करते हैं, जिसका अर्थ है कि वे प्रोग्रामिंग प्रतिमान के साथ सहजता से एकीकृत नहीं हैं।

+8

अच्छी तरह से कहा, + एस (0) एक्सडी –

+1

यह बताता है, बहुत अच्छा, क्यों एस/1 का उपयोग कर मेरे कार्यक्रमों का उत्पादन इतना अजीब था। बहुत बहुत धन्यवाद, महान स्पष्टीकरण! – okin33

1

एस/1 उत्तराधिकारी के लिए खड़ा है। इसका उपयोग तार्किक रूप से सुलभ तरीकों से संख्याओं का प्रतिनिधित्व करने के लिए किया जाता है।

+1

के लिए यह आपको बहुत धन्यवाद देता है! हालांकि जब मैं एक प्रोग्राम गिनती चलाने की कोशिश करता हूं जो एस/1 का उपयोग करता है तो मुझे के रूप में अजीब आउटपुट मिलता है? - mycount (a, [a, a], n)। एन = एस (एस (0)); एन = एस (0); एन = एस (0); एन = 0; झूठी। – okin33

0

यह प्रोलॉग-कार्यान्वयन विशिष्ट है। यह उत्तराधिकारी को इंगित करता है, this कुछ और जानकारी के लिए

+1

'एस (एक्स)' कार्यान्वयन विशिष्ट नहीं है। यह एक मनमाना मजेदार है। अपने स्थान पर 'टी (एक्स)' या 'succ (X)' आज़माएं। – false

संबंधित मुद्दे