मैं किसी सूची में उदाहरणों की संख्या की गणना कर रहा हूँ ...prolog: फिक्सिंग एकाधिक जवाब (कट का उपयोग कर?)
count(_,[],N,N).
count(Elem,[Elem|List],N,M) :- !, N1 is N+1, count(Elem,List,N1,M).
count(Elem,[_|List],N,M) :- count(Elem,List,N,M).
तो, मैं इस अप prolog में लिखा है दो तरह से है, और पहले एक काम करता है (ऊपर), लेकिन मुझे यह जानने के लिए उत्सुक था कि दूसरा क्यों नहीं करता (या बल्कि, मुझे कई जवाब देगा - केवल पहला ही सही है) यह क्यों है?
बहुत धन्यवाद
count(Z,X,R) :- count2(Z,X,R,0).
count2(W,[H|T],L,A):- (W == H), Lnew is A+1, count2(W,T,L,Lnew).
count2(W,[H|T],L,A):- count2(W,T,L,A).
count2(W,[],A,A).
मैंने कटौती के साथ दूसरे की कोशिश की, इसलिए: गिनती (जेड, एक्स, आर): - गिन 2 (जेड, एक्स, आर, 0)। गिनती 2 (डब्ल्यू, [एच | टी], एल, ए): -!, (डब्ल्यू == एच), लेन्यू ए + 1, गिन 2 (डब्ल्यू, टी, एल, एलन्यू) है। गिनती 2 (डब्ल्यू, [एच | टी], एल, ए): - गिन 2 (डब्ल्यू, टी, एल, ए)। count2 (डब्ल्यू, [], ए, ए)। लेकिन यह काम करने के लिए प्रतीत नहीं होता है, इसलिए मैंने सोचा कि शायद मूल रूप से कोड किसी भी तरह से त्रुटिपूर्ण है –