題目如上圖:
prolog 代碼如下,也是剛學而已, 其中 =:= 標識相等判斷, =\= 不相等, 逗號 表示 與 條件 ,分號標識 或條件
%X Y Z 分別表示 百 十 個
%根據條件1可以推出 當 X = 6 時, Y 不等於 8,2, Z 也不等於8,2
% 沒有列舉全
test_password1(X, Y, Z) :-
(X =:= 6,Y =\=8, Z =\= 2);
(X =\= 6,Y =:=8, Z =\= 2);
(X =\= 6,Y =\=8, Z =:= 2).
% 也沒有列舉全
test_password2(X, Y, Z) :-
test_password1(X, Y, Z),
((X =:= 1, Y =\= 1, Z =\= 4);
(X =:= 4, Y =\= 1, Z =\= 4);
(X =\= 6, Y =:= 6, Z =\= 4);
(X =\= 6, Y =:= 4, Z =\= 4);
(X =\= 6, Y =\= 1, Z =:= 6);
(X =\= 6, Y =\= 1, Z =:= 1)).
test_password3(X, Y, Z) :-
test_password2(X, Y, Z),
(( X =:= 0, Y =:= 6, Z =\= 2);
( X =:= 0, Y =:= 2, Z =\= 6);
( X =:= 0, Y =\= 6, Z =:= 2);
( X =\= 6, Y =:= 2, Z =:= 0);
( X =\= 0, Y =:= 6, Z =:= 2);
( X =\= 6, Y =:= 2, Z =:= 0)).
test_password4(X, Y, Z) :-
X =\= 7, X =\= 3, X =\= 8,
Y =\= 7, Y =\= 3, Y =\= 8,
Z =\= 7, Z =\= 3, Z =\= 8.
test_password5(X, Y, Z) :-
test_password3(X, Y, Z),
((X =:= 7, Y =\=8, Y =\= 0, Z =\=8, Z =\= 0);
(X =:= 0, Y =\=7, Y =\= 8, Z =\=7, Z =\= 8);
(Y =:= 8, X =\=7, X =\= 0, Z =\=7, Z =\= 0);
(Y =:= 0, X =\=7, X =\= 8, Z =\=7, Z =\= 8);
(Z =:= 8, X =\=7, X =\= 0, Y =\=7, Y =\= 0);
(Z =:= 7, X =\=8, X =\= 0, Y =\=0, Y =\= 8)).
check_password5(X, Y, Z) :-test_password5(X, Y, Z) ,
test_password4(X, Y, Z) .
加載運行結果如圖:
這。。。