Prolog PostFix Issue

У меня проблемы с решением этой проблемы с прологом. Определите предикат postfix, чтобы postfix(X,Y) сообщал, что X - это список, являющийся постфиксом Y. То есть каждый элемент X равен (объединяется с) соответствующим элементом Y, но Y может содержать дополнительные элементы до этого.

В:

postfix(X,[1,2,3]).

ИЗ:

[]; [3]; [2,3]; [1,2,3];

Я старался

postFix(X,[]). 
postFix(X,Y) :- append(,X,Y), [H|T] is Y, postfix(,X,T).

Спасибо!

1 ответ

Решение

Вы были на самом деле довольно близко. Это очень просто. Так что постфикс означает добавлять что-либо раньше X, что приводит к Y

Вот что делает append / 3: append(prefix,postfix,list)

postfix(X,Y) :- append(_,X,Y).

Пример:

- postfix(X,[1,2,3]).
X = [1, 2, 3] ;
X = [2, 3] ;
X = [3] ;
X = [] ;
false.

Если вы хотите это как список

postfixList(X,Y) :- findall(P,append(_,P,Y),X);
Другие вопросы по тегам