Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. lista(R):-findall(X,p(X),R),!.
  2.  
  3. borrar(X,[X|Y],Y):-!.
  4. borrar(X,[Y|Z],[Y|R]):-borrar(X,Z,R).
  5.  
  6. prefijo([],_M):-!.
  7. prefijo([_X],[_X|_M]):-!.
  8. prefijo([_X|L],[_X|M]):-prefijo(L,M).
  9.  
  10. inside(E1,E2,[E2]):-atom_chars(E2, L2),prefijo(E1,L2).
  11. inside(E1,E2,[]):-atom_chars(E2, L2),not(prefijo(E1,L2)).
  12.  
  13. subst(_,[],[]).
  14. subst(E,[X|Y],R):- inside(E,X,R1),
  15. subst(E,Y,R2),
  16. append(R1,R2,R).
  17.  
  18. quitarall(_,[],[]):-!.
  19. quitarall(L1,[L1|Y],R):-quitarall(L1,Y,R),!.
  20. quitarall(L1,[X|Y],[X|R]):-quitarall(L1,Y,R),!.
  21.  
  22. chars_atom([X,Y],R):-atom_concat(X,Y,R),!.
  23. chars_atom([X|Y],Atomo):-chars_atom(Y,Atomo1),atom_concat(X,Atomo1,Atomo).
  24.  
  25. cortarlistaup(_,[],[]):-!.
  26. cortarlistaup(Elem,[Elem|_],[]):-!.
  27. cortarlistaup(Elem,[X|Y],[X|R1]):-cortarlistaup(Elem,Y,R1),!.
  28.  
  29. cortarlistadw(_,[],[]):-!.
  30. cortarlistadw(Elem,[Elem|Y],Y):-!.
  31. cortarlistadw(Elem,[_|Y],R1):-cortarlistadw(Elem,Y,R1),!.
  32.  
  33. invertir([],[]):-!.
  34. invertir([X],[X]):-!.
  35. invertir([X|M],L):-invertir(M,S),append(S,[X],L).
  36.  
  37. posinside(E1,E2,[E2]):-atom_chars(E2, L2),posfijo(E1,L2).
  38. posinside(E1,E2,[]):-atom_chars(E2, L2),not(posfijo(E1,L2)).
  39.  
  40. posubst(_,[],[]).
  41. posubst(E,[X|Y],R):- posinside(E,X,R1),
  42. posubst(E,Y,R2),
  43. append(R1,R2,R).
  44.  
  45. begin(E,[E|_]).
  46.  
  47. dos(Elem,R):-lista(X),cortarlistaup('*',Elem,R1),subst(R1,X,Sub),cortarlistadw('*',Elem,R2),posubst(R2,Sub,R).
  48.  
  49. posfijo(L,L1):-invertir(L,X),invertir(L1,Y),prefijo(X,Y).
  50.  
  51. buscar('*',R):-lista(R),!.
  52.  
  53. buscar(Elem,R):-lista(X),atom_chars(Elem, L),last(L,*),borrar(*,L,L1),subst(L1,X,R),!.
  54.  
  55. buscar(Elem,R):-lista(X),atom_chars(Elem, L),begin(*,L),borrar(*,L,L1),posubst(L1,X,R),!.
  56.  
  57. 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),!.
  58.  
  59. buscar(Elem,[Elem]):-lista(X),member(Elem,X),!.
  60.  
  61. 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