一个最通俗最容易理解最能引起学习兴趣的prolog例子
逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻思在我日常生活中比比皆是,prolog正是把思逻逻逻逻用文字描述出来的算机言。是首先个例子吧。逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
比如一群年人正在恋,逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻个人都有自己心中所追求的象:每
逻逻逻逻学友王菲
逻逻逻逻逻学友周慧敏
王菲廷峰逻逻逻逻
周慧敏学友逻逻逻逻
逻逻逻逻廷峰王菲
逻逻逻逻逻廷峰周慧敏
刘德周慧敏逻逻逻逻逻
......
我两个年人要互相都喜,他就算逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
是一情,那上面的和是情呢,逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻算是一道最推理目了,那我如何用prolog逻逻逻逻逻言呢,
“逻逻逻逻学友王菲”逻逻逻是一条已知的事,用prolog逻言来
达就是:
逻(逻学友,王菲).
注意1:里是了方便才使用字的,真正的逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻prolog是不允使用除了基本字符以外字符的,也逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
就是,上面的句子必写成逻逻逻逻逻逻逻逻逻逻逻love(zhangxueyou,wanfei).,才逻逻逻能真正的理解。逻逻逻逻逻逻逻
注意2:最末尾的“.”一定不能掉,它表示一个句子束。逻逻逻
注意3:上面于来并没有真正的含,逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻所以我完全可以用逻逻逻逻逻逻 ai(zxy,wf).来表达个系,更一逻逻逻逻逻逻逻逻逻步,我甚至可以用逻逻逻逻逻逻 xxx(a,b).来表达,只要你自己心里清楚xxx表示,逻a表示学友,逻逻逻逻b表示王菲就可以了。
注意4:学友和王菲的序也没有特的逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
逻逻逻逻逻逻逻逻定,你完全可以把他个位置:(王菲,逻学友). 只要你心里清楚它表达的意思就行了,而以后都遵循被的人在前面逻逻逻逻逻逻逻逻逻的序,就不会出。逻逻逻逻逻逻逻逻逻
其他的事我就不写了,你可以参照上面逻逻逻逻逻逻逻逻逻逻逻逻逻逻
的例子自己把已知事翻成逻逻逻逻prolog的句。逻逻逻
那情的概念怎定呢,也很:逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
情逻(某人甲,某人乙):-逻(某人甲,某人乙),逻(某人乙,某人甲). :-在prolog中表示“如果”逻逻逻逻逻逻逻逻逻逻逻的意思,我使用它来定。上
面句的意思就是,某人甲和某人乙是逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
情的就是:某人甲某人乙,并且某逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
人乙某人甲。上面用来分隔两个的句子的逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻“,”表示并且的意思。
当然了能运行,个句子要改英文的:逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
lovers(X,Y):-love(X,Y),love(Y,X).
注意:在prolog中以小写字符的字符串代表确逻逻逻逻逻逻逻逻逻知的事物,比如love表示系,而逻逻逻逻逻逻逻zhangxueyou表示学逻逻友。而以大写字母的字符串表示未确定的事逻逻逻逻逻逻逻逻逻逻逻逻逻物,翻成就是某某。逻逻逻逻逻逻逻逻逻
完整的可运行的prolog程序如下:,我的拼音不好,要是什逻人的名字拼写了,原:,逻逻逻逻逻逻逻逻
love(zhangxueyou,wanfei).
love(zhangxueyou,zouhuimin).
love(wanfei,xietinfen).
love(zouhuimin,zhangxueyou).
love(xietinfen,wanfei).
love(xietinfen,zouhuimin).
love(liudehua,zouhuimin).
lovers(X,Y):-love(X,Y),love(Y,X).
我可以看出来,完整的逻逻逻逻逻逻逻逻逻逻prolog程序是有事和成的。逻逻逻逻逻逻逻事用来存一些数据,而用来存某逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
可以推理出来的系。逻逻逻
如果把上面的程序入逻逻prolog解器,于逻逻逻逻逻prolog解器,逻逻逻在后面有介,然后就可以以上的程序行。逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
prolog解器的提示符号逻逻逻逻逻逻逻逻“?-”,你只需要在在个提示符逻逻逻逻逻后面入自己的句子就可以了。我来看第一个:逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
?-love(zhangxueyou,wanfei).
事上我的完全和程序中的第一条逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
事一,个是逻逻逻逻逻逻逻逻逻“是非”逻逻逻逻逻逻逻逻逻逻逻,也就是回答的
是yes或者no。上面的的含是:就你所知,学友逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻王菲,由于我的程序中有的事,
所以解器将回答。逻逻逻逻逻逻
yes.
如果我:逻逻逻
?-love(zhangxueyou,liudehua).
解器将回答逻逻逻逻逻
no.
因它没有逻逻逻逻逻逻love(zhangxueyou,liudehua).逻逻逻个事。
在中我可以使用大写字母代表未逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
知的事物,解器找到答案。例如:逻逻逻逻逻逻逻逻逻逻逻逻
?-love(zhangxueyou,X).
逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻句的是:学友都喜那些人。解器将出答案:
X=wanfei,
X=zouhuimin,
no.
注意1:上面的两个“;”是人工入的,当解器找到一逻逻逻逻逻逻逻逻逻逻逻个答案之后,它将个答案出,并且等待用的一逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻入,如果用入步
“,”逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻,解器将找其他的答案,如果入
的是的符号,解器将止。逻逻逻逻逻逻逻逻逻逻逻逻逻逻
最后那个no.是因,系在出了逻逻逻逻逻逻逻逻zouhuimin逻个答案以后,用入逻逻逻“,”逻逻逻逻逻逻逻逻逻逻逻逻逻,表示想知道其他的答案,而解
器又找不到其他的答案了,于是出逻逻no.来止。我再逻逻逻逻逻逻逻逻
看一个例子:
?-love(X,zouhuimin). X=zhangxueyou; X=xietinfen;
X=liudehua;
no.
在上面的中,我只逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻及到事的,下涉面我来看的用法。逻逻逻逻逻逻逻逻逻
?- lovers(X,Y). X = zhangxueyou Y = zouhuimin ;
X = wanfei
Y = xietinfen ;
X = zouhuimin Y = zhangxueyou ;
X = xietinfen Y = wanfei ;
no
我看到逻逻逻lovers(X,Y).找出了系中所有的恋人。不逻逻逻逻恋每人被示了两次,是因逻逻逻逻逻逻逻逻逻逻prolog是考序的,也就是逻逻逻逻逻逻逻逻逻lovers(a,b).
和lovers(b,a).并不等价。一点在后面的学中,你会了解。逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻逻
再看一个例子:
?- lovers(wanfei,Y).
Y = xietinfen ;
no
逻逻逻逻逻王菲的恋人,果是xietinfen。呵呵,挺明的。逻逻逻逻逻逻我看到同是逻逻逻逻逻逻lovers,根据其参数不同,功能也不同,也是逻逻逻prolog的一个大特点。