मैं वर्तमान में प्रोलॉग में कोड का यह टुकड़ा है
s1 (Q, 100): - उत्पन्न (क्यू)। उत्पन्न ([एक्स, वाई, एस, पी]): - नेट (एक्स, 49), नेट (वाई, 9 8), एस एक्स + वाई, पी एक्स है * वाई, एस = & lt; 100, एक्स एंड एलटी; वाई। नेट (2, _) नेट (एक्स, एन): - N & gt; 2, एम एन -1, एनएटी (वाई, एम), एक्स Y + 1 है। यह वर्तमान में चौगुना, एक्स, वाई, एस, पी की एक सूची तैयार करता है।
ऐसा है कि - 1 & lt; एक्स एंड एलटी; 49
- 1 & lt; वाई एंड एलटी; 98
- 1 & lt; एक्स एंड एलटी; वाई
- एक्स + वाई और एलटी; = 100
- पी = एक्स * वाई
- एस = एक्स + वाई
यह काम करता है और सभी संभव समाधान बनाता है, लेकिन कई उत्तरों के साथ (यानी, अगले परिणाम प्राप्त करने के लिए हर बार ;
दबाएं।)
एक सूची सभी का गठन कैसे हो सकती है उदाहरण के लिए,
[[2, 3, 5, 6], [2, 4, 6, 8], ...]
< findall / 3
X
और वाई
के लिए दिए गए अंतराल की सीमा दोनों एक करके बंद हैं: - < कोड> 1 & lt; एक्स एंड एलटी; 49 मेल नहीं खाता
nat (X, 49)
,1 & lt; एक्स = & lt; 49
करता है। -
1 & lt; वाई एंड एलटी; 98
मेल नहीं खातानेट (वाई, 98)
,1 & lt; वाई = & lt; 98
करता है।
चलो इसे आरंभ करें!
यदि आप सभी कोड एकत्र करना चाहते हैं बिना का उपयोग कर findall / 3
(आदि), एक तरीका दो सूचियों Xs
और वाईएस
के (उर्फ क्रॉस-उत्पाद) की गणना करना है।
Xs
और वाईएस
प्राप्त करने के लिए, हम अंतर्निहित परिभाषा का उपयोग कर सकते हैं:
? - numlist (2,49, Xs)। Xs = [2,3,4, / * लगातार पूर्णांक 5 से 47 छोड़े गए * /, 48,49] ? - संख्या सूची (2,98, वाईएस) वाईएस = [2,3,4, / * लगातार पूर्णांक 5 से 96 छोड़े गए * /, 97,98] वाई
में प्रत्येक वाई
में X
में Xs
को गठबंधन करने के लिए
हम उपयोग करते हैं।
जो चौगुना एकत्र करने के लिए चुनते हैं, व्याकरण नियम x_y_maybe_quadruple // 2
:
x_y_maybe_quadruple (एक्स, वाई) का उपयोग करें - - & gt; यदि इन सभी स्थितियों से मुलाकात की जाती है - (पी
चलो इसे एक साथ रख दो!
? - संख्या सूची (2,49, एक्स), संख्या सूची (2,98, वाईएस), वाक्यांश (xproduct) (x_y_maybe_quadruple, Xs, Y), QSS)। क्यूएसएस = [[2,3,5,6], [2,4,6,8], / * बहुत सारे क्वाड्रुपले छोड़े गए * /, [48,51,99,2448], [48,52,100,24 9] ]।
तो ... क्या हम वास्तव में सभी चतुर्भुज प्राप्त करते हैं यदि हम findall / 3
?
? - findall (क्यू, उत्पन्न (क्यू), Qss1), संख्या सूची (2,49, Xs), संख्या सूची (2,98, वाईएस), वाक्यांश (एक्सप्रोडक्ट (x_y_maybe_quadruple, Xs, Ys) Qss2), Qss1 = Qss2 Qss1 = Qss2, Qss2 = [[2, 3, 5, 6], [2, 4, 6, 8], [2 | ...], [... | ...] | ...], एक्स = [2, 3, 4, 5, 6, 7, 8, 9, 10 | ...], वाईएस = [2, 3, 4, 5, 6, 7, 8, 9, 10 | ... ]।
यह काम करता है! और ऐसा न कि: हम ठीक उसी चौगुनी सटीक उसी क्रम !
No comments:
Post a Comment