Я ищу ресурсы для изучения разрешения ограничений в Prolog. Например,
List=[X, Y, Z], List ins 1..4, X - Y #= Z.
Я ищу ресурсы для изучения разрешения ограничений в Prolog. Например,
List=[X, Y, Z], List ins 1..4, X - Y #= Z.
Насколько я понимаю, вы хотите получить конкретные решения (а не домены). Для этого используйте label/1
или labeling/2
, которые дадут все явные решения (путем поиска с возвратом). В SWI-Prolog эти предикаты задокументированы здесь: labeling/2 .
label(List)
эквивалентно labeling([],List)
.
Для этого простого примера будет достаточно label(List)
:
?- List=[X, Y, Z], List ins 1..4, X - Y #= Z,label(List).
В общем, вам было бы полезно прочитать полную документацию по clpfd (здесь для SWI-Prolog).
List[X, Y, Z]
является недопустимым, как было прокомментировано в вашей ранее опубликованной проблеме. - person lurker   schedule 19.04.2014