Prolog permutation/2不返回置换 什么是排列/2?

Prolog permutation/2不返回置换 什么是排列/2?,prolog,swi-prolog,prolog-toplevel,Prolog,Swi Prolog,Prolog Toplevel,如帮助(排列)中所述。: 谓词置换/2主要用于生成置换 这就是我想用它的目的 排列/2应该如何工作 这是文档中给出的示例:(当然,周围的框通常不存在。) 复制示例(以及其他几个示例) 当我尝试置换/2时,发生了不同的情况:(其中任何一个都在我的计算机上运行) 如您所见,prolog不返回任何排列,只返回输入本身 为什么会这样 如何得到所有的排列 有关我的prolog版本的更多详细信息。 在我的Ubuntu/Linux计算机上 就在昨天,我安装了这个软件包swipl 它告诉我它的版本:

帮助(排列)中所述。

谓词
置换/2
主要用于生成置换

这就是我想用它的目的


排列/2应该如何工作 这是文档中给出的示例:(当然,周围的框通常不存在。)


复制示例(以及其他几个示例) 当我尝试
置换/2
时,发生了不同的情况:(其中任何一个都在我的计算机上运行)

如您所见,prolog不返回任何排列,只返回输入本身

  • 为什么会这样
  • 如何得到所有的排列

有关我的prolog版本的更多详细信息。
  • 在我的Ubuntu/Linux计算机上
  • 就在昨天,我安装了这个软件包
    swipl
  • 它告诉我它的版本:
    threaded,64位,版本7.4.2

@Asqiir my Prolog version SWI Prolog(线程,64位,版本7.4.0-rc1)。Windows 7。它按规定工作……仔细看transscript!在那里,它读作
X=[2,1]**空格**。
。您已阻止Prolog给出下一个答案。尝试按
空格
。口译员基本上是问你对答案是否满意。按enter键或
,表示“我很高兴”,Prolog不做任何其他事情。如果按
或空格,你说“不,这不是它”,Prolog会回溯并给你另一个结果。如果你想把它们都列在一个列表中,你可以做
setof(X,排列([1,2,3],X),Xs)。
 ____________________________________________________________________|                                                                          |
| ?- permutation([1,2], [X,Y]).                                      |
| X = 1, Y = 2 ;                                                     |
| X = 2, Y = 1 ;                                                     |
||false.____________________________________________________________ ||
?- permutation([1,2],[X,Y]).
X = 1,
Y = 2 .

?- permutation([2,1],X).
X = [2, 1] .

?- permutation([1,2],[2,1]).
true .