求prolog的九宫格拼程序的思路和代码
prolog吧
全部回复
仅看楼主
level 1
求prolog的九宫格拼程序的思路和代码.
主要是思路,怎么也想不通!求大神开导!
2014年08月08日 07点08分 1
level 7
普通方法是列举1-9的数,再令逻辑约束令它们都不一样而且具有某些行列和为15。
但那效率太坑了,所以先穷举一个全排列(虽然还是没效率但起码能运行)
lene([],[]).
lene([H|T],[H2|T2]):-lene(T,T2).
pppp(Ps,Pl):-lene(Ps,Pl),ppp(Ps,Pl),ppp(Pl,Ps).
ppp(_,[]).
ppp(Ps,[H|T]):-member(H,Ps),ppp(Ps,T).
jiu(N1,N2,N3,N4,N5,N6,N7,N8,N9):-pppp([1,2,3,4,5,6,7,8,9],H),
nth1(1,H,N1),nth1(2,H,N2),nth1(3,H,N3),nth1(4,H,N4),nth1(5,H,N5),nth1(6,H,N6),nth1(7,H,N7),nth1(8,H,N8),nth1(9,H,N9),
15 is N1 + N2 + N3,15 is N4 + N5 + N6,15 is N7 + N8 + N9,15 is N1 + N4 + N7,
15 is N2 + N5 + N8,15 is N3 + N6 + N9,15 is N1 + N5 + N9,15 is N3 + N5 + N7.
做好运行半小时时间准备
2014年08月09日 06点08分 2
level 1
不好意思是九宫格拼图程序,图字被吞了!
想要的是
初期状态 1 2 3 目标状态 1 2 3
8 4 5 8*4
7*6 7 6 5
或者是任意给初期状态得到上面的目标状态!
九宫格拼图也就是八方块问题,求解决的方法。
2014年08月09日 15点08分 3
初期状态 1 2 3 8 4 5 7*6
2014年08月09日 15点08分
目标状态 1 2 3 (换行) 8*4(换行) 7 6 5(换行)
2014年08月09日 15点08分
8数码问题太经典了网上可以搜到
2014年08月10日 02点08分
我搜了,可能是关键词不对,没有有用的,要不是c,java,没有prolog的
2014年08月10日 03点08分
1