Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- lista(R):-findall(X,p(X),R),!.
- borrar(X,[X|Y],Y):-!.
- borrar(X,[Y|Z],[Y|R]):-borrar(X,Z,R).
- prefijo([],_M):-!.
- prefijo([_X],[_X|_M]):-!.
- prefijo([_X|L],[_X|M]):-prefijo(L,M).
- inside(E1,E2,[E2]):-atom_chars(E2, L2),prefijo(E1,L2).
- inside(E1,E2,[]):-atom_chars(E2, L2),not(prefijo(E1,L2)).
- subst(_,[],[]).
- subst(E,[X|Y],R):- inside(E,X,R1),
- subst(E,Y,R2),
- append(R1,R2,R).
- quitarall(_,[],[]):-!.
- quitarall(L1,[L1|Y],R):-quitarall(L1,Y,R),!.
- quitarall(L1,[X|Y],[X|R]):-quitarall(L1,Y,R),!.
- chars_atom([X,Y],R):-atom_concat(X,Y,R),!.
- chars_atom([X|Y],Atomo):-chars_atom(Y,Atomo1),atom_concat(X,Atomo1,Atomo).
- cortarlistaup(_,[],[]):-!.
- cortarlistaup(Elem,[Elem|_],[]):-!.
- cortarlistaup(Elem,[X|Y],[X|R1]):-cortarlistaup(Elem,Y,R1),!.
- cortarlistadw(_,[],[]):-!.
- cortarlistadw(Elem,[Elem|Y],Y):-!.
- cortarlistadw(Elem,[_|Y],R1):-cortarlistadw(Elem,Y,R1),!.
- invertir([],[]):-!.
- invertir([X],[X]):-!.
- invertir([X|M],L):-invertir(M,S),append(S,[X],L).
- posinside(E1,E2,[E2]):-atom_chars(E2, L2),posfijo(E1,L2).
- posinside(E1,E2,[]):-atom_chars(E2, L2),not(posfijo(E1,L2)).
- posubst(_,[],[]).
- posubst(E,[X|Y],R):- posinside(E,X,R1),
- posubst(E,Y,R2),
- append(R1,R2,R).
- begin(E,[E|_]).
- dos(Elem,R):-lista(X),cortarlistaup('*',Elem,R1),subst(R1,X,Sub),cortarlistadw('*',Elem,R2),posubst(R2,Sub,R).
- posfijo(L,L1):-invertir(L,X),invertir(L1,Y),prefijo(X,Y).
- buscar('*',R):-lista(R),!.
- buscar(Elem,R):-lista(X),atom_chars(Elem, L),last(L,*),borrar(*,L,L1),subst(L1,X,R),!.
- buscar(Elem,R):-lista(X),atom_chars(Elem, L),begin(*,L),borrar(*,L,L1),posubst(L1,X,R),!.
- buscar(Elem,R):-lista(X),atom_chars(Elem, L),last(L,?),borrar(?,L,L1),subst(L1,X,R2),chars_atom(L1,E),quitarall(E,R2,R),!.
- buscar(Elem,[Elem]):-lista(X),member(Elem,X),!.
- buscar(Elem,R):-atom_chars(Elem, L),not(last(L,*)),member(*,L),dos(L,R),!.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement