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.