Tôi đang cố gắng kết hợp một tập hợp con các sự kiện tôi đang tạo và testcase của tôi hoạt động rất tốt!Đối số Prolog không được trình bày đầy đủ
x([1,2,3,4],'bleah'). x([1,2,4],'bleah2'). x([1,2],'bleah8'). x([1,3,4],'bleah3'). x([5,6,7,8],'bleah5'). x([6,7,8,9],'bleah6'). fuzzy(X,R) :- x(Z, R), subset(X,Z) . remaining(X,Y,D,M) :- x(Z,D) , select(X,Z,N), select(Y,N,M). pair(X,Y,R) :- x([X,Y],R) ; x([Y,X],R). Output: ?- x([1,2|REST],D). REST = [3, 4], D = bleah ; REST = [4], D = bleah2 ; REST = [], D = bleah8 ; false. ?- pair(2,1,D). D = bleah8 ; false. ?- fuzzy([2,1],R). R = bleah ; R = bleah2 ; R = bleah8 ; false. ?- remaining(2,1,D,M). D = bleah, M = [3, 4] ; D = bleah2, M = [4] ; D = bleah8, M = [] ; false.
Sau đó, tôi đã thêm thực tế đại diện cho trường hợp tiềm năng tiếp theo của tôi và giờ đây nó đã bị hỏng. Tôi mới làm quen với Prolog, tôi không chắc tại sao đây là cách khắc phục.
x([6,X,8,9],'woot') :- (X+0) > 7. Output: ?- x([1,2|REST],D). REST = [3, 4], D = bleah ; REST = [4], D = bleah2 ; REST = [], D = bleah8 ; false. ?- pair(2,1,D). D = bleah8 ; false. ?- fuzzy([2,1],R). R = bleah ; R = bleah2 ; R = bleah8 ; ERROR: >/2: Arguments are not sufficiently instantiated ^ Exception: (9) _G260+0>7 ? abort % Execution Aborted ?- remaining(2,1,D,M). D = bleah, M = [3, 4] ; D = bleah2, M = [4] ; D = bleah8, M = [] ; ERROR: >/2: Arguments are not sufficiently instantiated ^ Exception: (10) _G270+0>7 ? abort % Execution Aborted ?- x([_,15,_,_],D). D = woot.
Đề xuất được hoan nghênh.
Rất tiếc, tôi cho rằng điều này có thể làm mất hiệu lực phương pháp tìm kiếm sự thật của tôi. Bạn có đề xuất bất kỳ giải pháp nào không, hoặc tôi có phải đánh giá lại mô hình của mình không? – Demosthenex