Prolog-带迭代器的回溯
我有一个谓词,比如:Prolog-带迭代器的回溯,prolog,iteration,backtracking,Prolog,Iteration,Backtracking,我有一个谓词,比如: solve(parts(X), Places) :- "iterate Pl from Places to 0", tryPutPart(X, Pl), fail. 我想在那里强制回溯,因为我想要所有可能的解决方案(相反,我会在不同的谓词中递归地找到Pl的位置) 有可能吗?我想出了一个主意,列出长度的位置,看起来像[1,2,3…],然后尝试从中不确定地找出一些Y 我希望的行为是,如果我编写places(0)。名额(1)。学额(2)。--等转换成代码
solve(parts(X), Places) :-
"iterate Pl from Places to 0",
tryPutPart(X, Pl),
fail.
我想在那里强制回溯,因为我想要所有可能的解决方案(相反,我会在不同的谓词中递归地找到Pl的位置)
有可能吗?我想出了一个主意,列出长度的位置
,看起来像[1,2,3…]
,然后尝试从中不确定地找出一些Y
我希望的行为是,如果我编写places(0)。名额(1)。学额(2)。--
等转换成代码,然后像
:- places(Y), tryPutPart(X, Y).
对于这个问题,我对
for(M,M,N):- M < N.
for(I,M,N):- M < N, M1 is M + 1, for(I,M1,N).
您可以使用
between/3
谓词检查给定范围内的所有整数。例如:
?- between(1, 10, N), N > 3, write(N), nl, fail.
4
5
6
7
8
9
10
false.
有关该谓词的SWI Prolog文档,请参阅。您的问题有点混乱。我不明白你想达到什么目的。请试着重新表述一下。
?- between(1, 10, N), N > 3, write(N), nl, fail.
4
5
6
7
8
9
10
false.