2011-04-12 74 views
0

例如,我创建列表如下如何动态地设置域列表

length(List,5), 
List :: 1..5, 

我想设置列表的第二个元素,它看起来像 List[1] :: 1..2%列表,从0到4

我不知道如何实现它?

非常感谢:)

回答

1

例如,使用in运营商束缚水饱和度,序言,我可以这样做:

init_static(List) :- length(List, 5), List in 1..5, List = [_,Y|_], Y in 1..2. 

,如果我事先知道,我需要的第二个元素特定的约束。

要概括为任何指数:

init_dynamic(I, List) :- length(List, 5), List in 1..5, length(L1, I), Y in 1..2, append(L1, [Y|_], List). 

所以对于第二要素的查询是:

init_dynamic(1, [1,2,4,3,5]). 
true. 

我认为你可以做类似的事情在其他Prolog的变种::运营商。

+0

布拉沃,非常感谢:) – funlive 2011-04-12 17:41:15