/*
 * ej-02-05.pl
 *
 * Definir un predicado sust/4, el primer argumento es Lista1 
 * (una lista), el segundo es Patron1 (una lista), el tercero
 * es Patron2 (una lista), y el cuarto es Lista2 (una lista).
 * El predicado sust/4 evalua true si Lista2 es la resultante de 
 * sustituir *todas* las ocurrencias de Patron1 en Lista1 por
 * Patron2.  Ejemplo:
 *
 * sust( [a,b,c,d,1,a,b,c,1,a], [1,a], [c], T ).
 * T = [a,b,c,d,c,b,c,c]
 *
 */

/*
 * sust(Lista, Saco, Pongo, Resultado).
 */

sust([], _Saco, _Pongo, []).

sust(L1, Saco, Pongo, Res) :-
	append(Saco, L2, L1), !,
	sust(L2, Saco, Pongo, RestoRes),
	append(Pongo, RestoRes, Res).

sust([X|Xs], S, P, [X|Ys]) :-
	sust(Xs, S, P, Ys).

/* EOF ej-02-05.pl */
