में विभिन्न परिणाम नमूना कार्यक्रम 8-रानी समाधानों की संख्या को दर्शाता है और गणना करता है।swi-prolog और yap
[user].
(perm([X|Y],Z) :- (perm(Y,W),takeout(X,Z,W))).
perm([],[]).
takeout(X,[X|R],R).
(takeout(X,[F|R],[F|S]) :- (takeout(X,R,S))).
(solve(P) :- (perm([1,2,3,4,5,6,7,8],P),combine([1,2,3,4,5,6,7,8],P,S,D),alldiff(S),alldiff(D))).
(combine([X1|X],[Y1|Y],[S1|S],[D1|D]) :- (is(S1,+(X1,Y1)),is(D1,-(X1,Y1)),combine(X,Y,S,D))).
combine([],[],[],[]).
(alldiff([X|Y]) :- (\+ member(X,Y),alldiff(Y))).
alldiff([X]).
end_of_file.
क्वेरी:
(setof(P,solve(P),Set),length(Set,L),write(L),write('\n'),fail).
swipl
नियम, (। खेद कोड को पढ़ने के लिए मुश्किल है अगर इस मशीन द्वारा जेनरेट एक एस-अभिव्यक्ति से है मूल कोड https://www.cpp.edu/~jrfisher/www/prolog_tutorial/2_11.html है) 92 लौटाता है; जबकि yap 40320 देता है। इसके अलावा, जब मैं solve(P)
क्वेरी करता हूं, तो swipl केवल दो समाधान देता है (जो 92 के विपरीत भी है); याप बहुत अधिक लौटाता है (संभवतः उनमें से 40320)। तो अंतर क्यों? क्या ऐसी गंभीर संगतता समस्या है?
संस्करण:
- YAP 6.2.2 (x86_64-linux): शनि सितं, 17 13:59:03 यूटीसी 2016
- SWI-Prolog amd64 के लिए संस्करण 7.2.3
क्या आप अभी भी कोड को एक पठनीय रूप में डाल सकते हैं? – false
लिंक –
लिंक में मूल एक है अगली बार, कृपया यहां पठनीय संस्करण शामिल करने के लिए। एसओ काम करता है। – false