मैं प्रोलॉग सीखना शुरू कर रहा हूं और मुझे एक प्रोग्राम चाहिए जो एक पूर्णांक P
देता है A
और B
को P = A² + B²
को पूर्णांक देता है। अगर वहाँ A
और B
के मूल्यों है कि इस समीकरण को संतुष्ट नहीं हैं, false
प्रोलॉग प्रोग्राम दो पूर्णांक वर्गों के योग के रूप में एक (पूर्णांक) संख्या प्राप्त करने के लिए, यह क्यों काम नहीं करता है?
किया जाना चाहिये उदाहरण के लिए: अगर P = 5
, यह A = 1
और B = 2
(या A = 2
और B = 1
) क्योंकि 1² + 2² = 5
देना चाहिए। क्वेरी के साथ
giveSum(P, A, B) :- integer(A), integer(B), integer(P), P is A*A + B*B.
:
मैं सोच रहा था इस काम करना चाहिए
giveSum(5, A, B).
हालांकि, ऐसा नहीं है। मुझे क्या करना चाहिए? मैं प्रोलॉग के लिए बहुत नया हूं इसलिए मैं अभी भी बहुत सारी गलतियों को कर रहा हूं।
अग्रिम धन्यवाद!
आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मेरे कुछ प्रश्न हैं। अगर आप उन्हें जवाब दे सकते हैं तो यह बहुत ही अच्छा होगा। 'गैर-मोनोटोनिक भविष्यवाणी' का अर्थ क्या है, क्या/1 या/3 का मतलब है और लेबल() फ़ंक्शन क्या करता है? इंटरनेट पर मैंने पढ़ा है "वर्र्स में प्रत्येक चर के लिए एक मान असाइन करें। लेबलिंग का मतलब है कि सीमित डोमेन चर के लिए मूल्यों को व्यवस्थित रूप से कर रहे हैं, जब तक कि वे सभी जमीन न हों।" फ़ंक्शन लेबलिंग() के लिए, लेकिन मैं वास्तव में इसे समझ नहीं पा रहा हूं। खराब अभ्यास को ध्यान में रखते हुए भी धन्यवाद, मैंने नाम बदल दिया और भविष्य में अंडरस्कोर और घोषणात्मक नामों का उपयोग करेगा। – Kevin
कृपया इसके लिए अलग प्रश्न दर्ज करें। वे सभी अपने बारे में चर्चा करने योग्य हैं: 1) monotonicity की परिभाषा और 2) "लेबलिंग" क्या है? आपके प्रश्न में से केवल एक ही टिप्पणी में उत्तर देने के लिए काफी आसान है: 'f/3' एक ** अनुमानित संकेतक ** है जो 3 * तर्क * के साथ' f' नामक भविष्यवाणी को दर्शाता है। ध्यान दें कि हम हमेशा ** भविष्यवाणी ** के बारे में बात करते हैं, जो * कार्यों * से अधिक सामान्य * हैं। नामों के लिए बढ़िया! अच्छे, घोषणात्मक नाम ढूंढना और उपयोग करना जो भविष्यवाणी ** ** सामान्यता ** के लिए न्याय करते हैं, प्रोलॉग में प्रोग्रामिंग करते समय, और शायद कठिन लोगों में से एक बहुत महत्वपूर्ण पहलू है। – mat