Вставка элемента в список после последнего вхождения указанного на Прологе
Код на Lisp domains str=string strp=str* predicates revers(strp,strp,strp) /* инверсия списка(вспомогательный предикат) - аккумулятор - исходный список - получаемый список */ insert(str,str,strp,strp) /* вставка элемента в список перед первым вхождением указанного - вставляемый элемент - элемент перед которым происходит вставка - исходный список - измененный список */ clauses revers(Y, [], Y). revers(X1, [Z|X2], Y):- revers([Z|X1], X2, Y). insert(_, _, [], []):- !. insert(X, Y, [Y|Z], [X, Y|Z]):- !. insert(X, Y, [H|Z], [H|N]):- insert(X, Y, Z, N). goal Ls=["2", "3", "5", "3", "5"], revers([], Ls, Ls1), insert("1", "3", Ls1, Ls2), revers([], Ls2, Ls3).
|