перестановка / 2 не возвращает перестановки - PullRequest
0 голосов
/ 03 мая 2018

Что такое перестановка / 2?

Как сказано в help(permutation).:

Предикат permutation/2 в первую очередь предназначен для генерации перестановок.

Вот для чего я хочу это использовать.


Как должна работать перестановка / 2

Это пример, приведенный в документации: (Конечно, коробка вокруг обычно не существует.)

 ____________________________________________________________________|                                                                          |
| ?- permutation([1,2], [X,Y]).                                      |
| X = 1, Y = 2 ;                                                     |
| X = 2, Y = 1 ;                                                     |
||false.____________________________________________________________ ||

Воспроизведение примера (и нескольких других примеров)

Когда я пытаюсь permutation/2, происходит не то же самое: (любой из них запускается на моем компьютере)

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

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

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

Как видите, пролог не возвращает никакой перестановки, а сам ввод.

  • Почему это происходит?
  • А как получить все перестановки?

Подробнее о моей версии пролога.

  • На моем компьютере с Ubuntu / Linux
  • Я установил пакет swipl только вчера
  • это говорит мне, что это версия: threaded, 64 bits, version 7.4.2
...