Предикат не звонит в SWI-Пролог - PullRequest
0 голосов
/ 05 июня 2018
solve([("ab","abab"), ("b","a"), ("aba","b"), ("aa","a")], Solution)

Ответ доставлен.

1 Ответ

0 голосов
/ 05 июня 2018

SWI-Prolog 7.x изменил значение по умолчанию флага double_quotes с codes на string.Это, очевидно, то, что вызывает проблему, которую вы описываете.Если вы добавите в начало исходного файла с кодом, который вы разместили, следующую директиву:

:- set_prolog_flag(double_quotes, codes).

Вы должны получить:

?- solve([("ab","abab"), ("b","a"), ("aba","b"), ("aa","a")], Solution).
Solution = [4, 4, 2, 1] ;
Solution = [1, 1, 3, 2, 2, 4, 4] ;
Solution = [4, 4, 2, 1, 4, 4, 2, 1] ;
Solution = [1, 1, 3, 2, 2, 4, 3, 4, 2|...] ;
Solution = [1, 1, 3, 2, 2, 4, 4, 4, 4|...] ;
...