Пролог объединение предопределенных предикатов
У меня есть два вопроса, над которыми я работаю, и мне просто трудно понять этот вопрос. Первое время:
Цитата:Создайте предикат пролога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
возвращается как одноэлементная переменная.