2016-07-01 3 views
1

У меня есть это: problem(a(1,2,3),P) И мне нужно, чтобы получить это: P = [e(1, 3), e(2, 0)]Основная ошибка в Прологе

Я только начал с Пролога несколько дней назад, и я написал это:

problem([a(X,Y,Z)],P) :- P is [e(X,Z),e(Y,0)]. 

Но я только получаю a false ответ. Какую ошибку я сделал?

ответ

2

Предикат стандарта is/2 используется для оценки арифметических выражений. В вашем случае, простой факт будет достаточно:

problem(a(X,Y,Z), [e(X,Z),e(Y,0)]). 

Например:

?- [user]. 
problem(a(X,Y,Z), [e(X,Z),e(Y,0)]). 
|: ^D 

?- problem(a(1,2,3), P). 
P = [e(1, 3), e(2, 0)]. 
+0

Perfect, спасибо :) – user3066261

Смежные вопросы