1
Есть ли способ я могу создать функцию для того/3, который делает это:
оных (1,2, X) - Х 3.
добавить (1, X, 3) - X равно 2.
add (X, 2,3) - X равно 1.Добавление в Прологе
Есть ли способ я могу создать функцию для того/3, который делает это:
оных (1,2, X) - Х 3.
добавить (1, X, 3) - X равно 2.
add (X, 2,3) - X равно 1.Добавление в Прологе
В качестве новичка лучше всего использовать library(clpfd)
, который обеспечивает все эти функциональные возможности; и даже больше. С
?- use_module(library(clpfd)).
Мы начинаем, в SICStus вы должны теперь сказать assert(clpfd:full_answer)
, то мы имеем:
?- 1+2#=Z.
Z = 3.
?- 1+Y#=3.
Y = 2.
, как вы ожидали. Но даже больше!
?- X+X#=Z.
2*X#=Z.
?- X+X#=X.
X = 0.
?- X+Y#=Z.
X+Y#=Z.
Пожалуйста, ознакомьтесь с [Справка по переполнению стека] (http://stackoverflow.com/help), чтобы узнать, как задать правильный вопрос. Вам нужно показать попытку и задать конкретные вопросы о том, где вы застряли. Как подсказка к вашей проблеме, см. Библиотеку Prolog CLPFD. – lurker
Если вы используете SWI-Prolog, есть предикат 'plus/3', который делает именно это. –
без каких-либо расширений пролога (в прологе ISO) вы можете использовать предикат var/1 для проверки переменной свободной или связанной и выполнить соответствующее добавление в зависимости от того, какой аргумент (1-й, 2-й или 3-й) является бесплатным – user396672