使用prolog猜密碼

圖片.png

題目如上圖:

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) .


加載運行結果如圖:

圖片.png

這。。。

圖片.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章