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);