Findall / 3保存在列表中,条件不正确

时间:2016-10-24 13:13:42

标签: prolog

我正在尝试使用findall / 3谓词来查找条件不正确的所有结果。然后我想切树以提高效率。 示例:

test(ListResult):-
   findall(Alpha,
      (  between(1,7,X),
         recu(X,Alpha,Beta),
         write('Alpha'),write(Alpha),write('Beta'),write(Beta),
         Alpha>Beta,
         write('cut'),
         !
      ),
      ListResult).

recu(X,Alpha,Beta):-
   random(0,5,A),
   random(0,5,Beta),
   Alpha is A+X.

它在好时间切断,但在Alpha>Beta条件为真时逻辑上只保存数字。 实际结果:

Alpha1Beta3Alpha2Beta2Alpha3Beta1cut
ListResult = [3]

通缉结果:

Alpha1Beta3Alpha2Beta2Alpha3Beta1cut
ListResult = [1,2,3]

0 个答案:

没有答案