BuckGup Ответов: 0

Пролог объединение предопределенных предикатов


У меня есть два вопроса, над которыми я работаю, и мне просто трудно понять этот вопрос. Первое время:
Цитата:
Создайте предикат пролога flatten_append/3 который имеет 3 аргумента, которые все являются списками. Третий список должен быть эквивалентен объединению сглаженных версий первого списка, за которыми следует сглаженная версия второго списка. Например, flatten append([1,2,[3,4,5],[6]],[[7],[8,[9]]],X) должно получиться связывание X в список [1,2,3,4,5,6,7,8,9] Используйте встроенные предикаты append/3 и flatten/2.

Означает ли создание предиката, что я создаю новый файл, который затем консультируюсь для запуска? Также для трех аргументов это похоже на это thing([], [X], X) или это будет только один, и мне нужно что-то вроде этого для трех аргументов?
thing([],[X],X).

thing([H|T],[H|X],Y) :- H = 1, anything(Y,Z), thing(T,X,Z).

thing([H|T],[H|X],Y) :- H = 0, nothing(Y,Z), thing(T,X,Z)

Наконец, что это значит, когда он говорит "преуспеть"? X? Есть ли конкретный заказ или в конце вы назначаете X равным тому, что вы только что сделали? Спасибо

Что я уже пробовал:

suffix([Ys], Xs) :-
    flatten([Ys], Xs).

prefix([Ys], Xs) :-
    flatten([Ys], Xs).

flatten_append([Xs], [Ys], X) :-
    suffix(Xs, Zs),
    prefix(Zs, Ys).

Но мне нужно добавить сплющенные списки в один новый список, как X. X возвращается как одноэлементная переменная.

0 Ответов