दिलचस्प पोस्ट
यह जावास्क्रिप्ट regex काम क्यों नहीं करता है? रेल फील्ड 4 के साथ कस्टम फ़ील्ड / कॉलम जोड़ें क्यों नहीं getchar () मेरे लिए scanf () के बाद दर्ज करने के लिए इंतजार? स्प्रिंग एमवीसी नियंत्रकों में स्प्रिंग डाटा प्रोजेक्शन कैसे लागू करें? कैसे एक ही फैशन में दो ArrayLists यादृच्छिक? एक कस्टम सॉर्टिंग ऑर्डर के जरिये ऑरेक्ट्स का एक अर्रे लिस्ट करना क्यों करता है: .foo a: लिंक, .foo a: विज़िट किए गए {} चयनकर्ता ओवरराइड ए: होवर, ए: सक्रिय {} सीएसएस में चयनकर्ता? पाठ: दाएं से बाएं (सीएसएस) JSON के लिए कोई क्वेरी भाषा है? Android – चेकबॉक्स और टेक्स्ट के बीच की दूरी SQL सर्वर के टाइमस्टैम्प कॉलम को डेटटाईम प्रारूप में कनवर्ट करने के लिए कैसे करें आप जावा में एक वर्ग को स्थिर क्यों नहीं घोषित कर सकते हैं? गिट पर रिमोट हुक को सक्रिय नहीं करते हैं एक्सल वर्कशीट से एसक्यूएल सम्मिलित स्क्रिप्ट जेनरेट करें ओरेकल: एक बड़ी एक्सएमएल फाइल लोड हो रही है?

प्रोलॉग में अलग-अलग सूचियां

मुझे वास्तव में एक कठिन समय हो रहा है कि मेरे कोड को मेरे अलग-अलग सूचियों को दिखाने के लिए कैसे और भी अजीब नंबर मिल सकता है मुझे यह भी निश्चित नहीं है कि मेरी समझ में क्या कमी है मैं स्पष्ट रूप से इस भाषा के लिए नया हूँ और इसे स्कूल के लिए उपयोग करना चाहिए। मेरा अनिवार्य और कार्यात्मक दिमाग मुझे यह नहीं बताएगा कि इस योग्य के साथ नरक क्या चल रहा है

अब, नहीं, मैं आपका होमवर्क करने के लिए नहीं कह रहा हूँ! मैं बस आपको यह समझने में मदद करता हूँ कि मेरी समझ में क्या कमी है? मैंने भी इसी तरह के जवाब देखे हैं लेकिन मैं उन्हें इस समारोह को लिखने के तरीके से परिवर्तित नहीं कर सकता।

कृपया, एक बार फिर, मुझे ऐसा करने के लिए बास न करें जैसा कि मैंने पहले से ही सामान्य रूप से किया है। कृपया मेरी मदद करो मेरी समझ में क्या कमी है। कृपया मुझे बताए बिना कृपया उत्तर और कोड स्निपेट न दें कृपया

यह रहा:

is_even(H) :- 0 is mod(H, 2). segregate(List, Even, Odd) :- segregator(List, Even, Odd). segregator([], [], []). segregator([H|T], E, O) :- is_even(H), % I feel here is where I am supposed to build the list, % but I have no clue how since Even or Odd has not been unified. segregator(T, E, O), write('Even is '), write(E), nl. segregator([H|T], E, O) :- % Same here as above. segregator(T, E, O), write('Odd is '), write(O), nl. 

Solutions Collecting From Web of "प्रोलॉग में अलग-अलग सूचियां"

तार्किक रूप से शुद्ध कार्यान्वयन बहुत सीधा-आगे है, सीएलपीएफडी के लिए धन्यवाद:

 :- use_module(library(clpfd)). list_evens_odds([],[],[]). list_evens_odds([X|Xs],[X|Es],Os) :- X mod 2 #= 0, list_evens_odds(Xs,Es,Os). list_evens_odds([X|Xs],Es,[X|Os]) :- X mod 2 #= 1, list_evens_odds(Xs,Es,Os). 

कुछ नमूना प्रश्न हम सफल होने की उम्मीद करते हैं (उत्तर के एक सीमित क्रम के साथ):

 ?- Xs = [1,2,3,4,5,6,7], list_evens_odds(Xs,Es,Os). Xs = [1,2,3,4,5,6,7], Es = [ 2, 4, 6 ], Os = [1, 3, 5, 7] ; false. ?- list_evens_odds(Ls,[2,4],[1,3]). Ls = [2,4,1,3] ? ; Ls = [2,1,4,3] ? ; Ls = [2,1,3,4] ? ; Ls = [1,2,4,3] ? ; Ls = [1,2,3,4] ? ; Ls = [1,3,2,4] ? ; no 

पूछे जाने वाले प्रश्नों के बारे में क्या असफल होने की उम्मीद है ?

 ?- list_evens_odds(Ls,[2,4,5],[1,3]). no ?- list_evens_odds(Ls,[2,4],[1,3,6]). no ?- list_evens_odds([_,_,_],[2,4],[1,3]). no 

अंत में, सबसे सामान्य क्वेरी :

 ?- assert(clpfd:full_answer). yes ?- list_evens_odds(Ls,Es,Os). Ls = [], Es = [], Os = [] ? ; Ls = [_A], Es = [_A], Os = [], _A mod 2#=0, _A in inf..sup ? ... 

2015-05-06 को संपादित करें

तार्किक-पवित्रता के साथ यह करने का एक और तरीका है!

मेटा- tpartition/4 प्रयोग करें zeven_t/2 या zodd_t/2 के साथ

 bool01_t(1,true). bool01_t(0,false). zeven_t(Z,Truth) :- Z mod 2 #= 0 #<==> B, bool01_t(B,Truth). %zodd_t(Z,Truth) :- Z mod 2 #= 1 #<==> B, bool01_t(B,Truth). zodd_t(Z,Truth) :- Z mod 2 #= B, bool01_t(B,Truth). % tweaked 

zeven_t/2 एक पूर्णांक, zodd_t/2 विषमता की समानता को zodd_t/2

जगह में सब कुछ के साथ, चलो कुछ प्रश्न चलाते हैं!

 ? - विभाजन (zeven_t, [1,2,3,4,5,6,7], एएस , ओएस )
 एएस = [2,4,6], ओस = [1,3,5,7]
 ? - tpartition (zodd_t, [1,2,3,4,5,6,7], ओएस , एएस )  % तर्क आदेश अलग है
 एएस = [2,4,6], ओस = [1,3,5,7]

दोनों निर्णायक रूप से सफल रहे list_evens_odds/3 का उपयोग करते हुए समकक्ष क्वेरी नहीं है