使用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

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