程序求助
prolog吧
全部回复
仅看楼主
level 12
求解下面一个问题:
假设一个列表中[A, B, nul]中,每次可以将nul与A另外一个对象交换获得新的列表。
下面请问从[b,a,nul]变成[a,b,nul]需要哪几步?
程序在此:
http://pastebin.com/DwKTZZ4G
谢谢。
2012年05月18日 16点05分 1
level 1
已在prolog论坛里回复你了。
2012年05月20日 04点05分 3
level 12
看到,感谢!
2012年05月20日 12点05分 4
level 12
你没看题吗?
每次只能用nul和别的交换。
2012年05月21日 05点05分 6
level 12
我只是通过这一问题,学学prolog而已。
我也没要求有代表性,完全可以看做两个不同问题。
既然说我没仔细分析,问题我都写了,代码也贴了,你来帮我分析啊。
说了这么多,一点(对我)有用的都没。
还不如像3L一样,帮我改了程序拉倒。
而且,“三角形中nul只有一个方向”,这句有问题啊。
另外,[b,a,nul]变成[a,b,nul]过程如下:
[b,a,nul] --> [nul,a,b] -->[a,nul,b] -->[a,b,nul]
2012年05月21日 07点05分 9
level 13
%定义交换元素位置的步骤
step([A,nul,B],[nul,A,B]).
step([A,nul,B],[A,B,nul]).
step([nul,A,B],[A,nul,B]).
step([nul,A,B],[B,A,nul]).
step([A,B,nul],[A,nul,B]).
step([A,B,nul],[nul,B,A]).
%当只需要一步可得到目标时
solve(Start,Goal):-
step(Start,Goal),
write(Start),nl,
write(Goal),nl.
%当需要多步得到目标时
solve(Start,Goal):-
step(Start,Middle),
write(Start),nl,
solve(Middle,Goal).
2017年06月14日 04点06分 10
1