Вставка элемента в список перед указанными.
Код на Lisp domains int=integer str=string strp=str* predicates insert(str,strp,strp,strp). /* вставка элемента в список перед указанными параметры: 1- вставляемый элемент 2- список последовательности перед которой происходит вставка 3- исходный список 4- измененный список*/ check(strp,strp). /* проверка первых элементов списка2 на равенство с элементами списка1 параметры: - список 1 - список 2 */ clauses insert(X,_,[],[]):- !. insert(X,[Head|Y],[Head|Z],[X,Head|T]):- check(Y,Z),insert(X,[Head|Y],Z,T),!. insert(X,Y,[Head|Z],[Head|N]):- insert(X,Y,Z,N). check([],Z):- !. check([Head|Y],[Head|Z]):- check(Y,Z).
|