使用prolog猜密码

02/06 13:29
阅读数 51

图片.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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部