首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

关于prolog的一个程序 请大家指点一上

2012-12-21 
关于prolog的一个程序 请大家指点一下本帖最后由 usc_su 于 2012-11-07 16:46:18 编辑要求是这样的1. The

关于prolog的一个程序 请大家指点一下
本帖最后由 usc_su 于 2012-11-07 16:46:18 编辑 要求是这样的
1. The Brown Basket is 4 baskets away from the Purple Basket. (i.e., there
are exactly 3 baskets in between Brown and Purple)
(brown色的篮子和purple色的篮子中间有三个篮子)
2. Either the Blue Basket or the Orange basket lies between the Green and
Yellow Baskets.
(不是blue色的篮子在green篮子和yellow篮子的中间,就是organe篮子在他们中间)
3. The Blue Basket is not next to the Orange basket
(blue篮子和orange篮子不挨着)
4. The Brown and Red Baskets are next to each other.
(brown篮子和red篮子是挨着的)
5. The Orange basket is somewhere to the right of the Brown Basket.
(orange篮子在brown篮子的右边)
6. The Red basket is the first basket on the left.
(red篮子是第一个篮子)

我写了一段prolog程序想去得到整个颜色篮子的排列顺序,我是初学,不知道我写的为什么是错的,得不到正确结果,请大家帮我看下。


% 定义一个函数,说明一个物体在另一个物体的右边
iright(L, R, [L | [R | _]]).
iright(L, R, [_ | Rest]) :- iright(L, R, Rest).
%定义两个物体在一起的函数
nextto(L, R, List) :- iright(L, R, List).
nextto(L, R, List) :- iright(R, L, List).
%定义函数说明X在L和R的中间
inbetween(X,L,R,LS):- iright(L,X,LS), iright(X,R,LS).
inbetween1(X,Y,L,R,LS1):- \+inbetween(X,L,R,LS1),inbetween(Y,L,R,LS1),Y\=X.
inbetween1(X,Y,L,R,LS1):- \+inbetween(Y,L,R,LS1),inbetween(X,L,R,LS1),Y\=X.
%定义说明L和R中间只有三个篮子。
threebetween(L,R,LST):- iright(L,X,LST),iright(X,Y,LST),iright(Y,Z,LST),iright(Z,R,LST).
threebetween(L,R,LST):- iright(R,X,LST),iright(X,Y,LST),iright(Y,Z,LST),iright(Z,L,LST).
%定义说明两个物体不挨着
apartfromeachother(L,R,NLST):- \+nextto(L,R,NLST).
%这是facts
myprogram(Data) :-     =(Data,       [red,_,_,_,_,_,_]),
member(brown,Data),
member(purple,Data),
member(blue,Data),
member(yellow,Data),
member(green,Data),
member(orange,Data),
member(red,Data),
threebetween(brown,purple,Data),
inbetween(blue,orange,green,yellow,Data),
apartfromeachother(blue,orange,Data),
nextto(brown,red,Data),
iright(brown,orange,Data).


事实是结果是正确的,但是有个函数一直没有纠正,就是最后一个说orange颜色的在brown的右边,我的函数写的是紧跟在右边,但是要求说的是只要在右边就可以,但是我不知道怎么去改这个问题,大家给我点意见,谢谢。
[解决办法]
大家帮帮忙看下啊

热点排行