Otro sencillo codekata en Prolog para hacer pilas de elementos. Esta es una continuación del post anterior. Las pilas de elementos son una de las estructuras básicas de programación. Son listas en las que simplemente se añaden elementos y se extraen por una parte, normalmente por la cabeza de la pila, o la cima también, como si fueran una pila de elementos apilados verticalmente.
El código fuente de una pila en Prolog
Siguiendo con los codekatas, podría quedar algo como la imagen del principio:
% Probando una pila en Prolog..
:- dynamic pila/1.
pila([1,2,3]).
escribePila :-
pila(X),
listaElementosDeLaPila(X).
listaElementosDeLaPila([]).
listaElementosDeLaPila([Cabeza|Cola]) :-
write('Esto es un elemento de la pila: '),write(Cabeza),nl,
listaElementosDeLaPila(Cola),
true.
extraeDePila :-
pila([Cabeza|Cola]),
write(Cabeza),nl,
retract(pila([Cabeza|Cola])),
assert(pila(Cola)).
añadeEnPila :-
write('¿Qué elemento quieres añadir?'),nl,
read(NuevoElemento),
retract(pila(X)),
append([NuevoElemento], X, NuevaPila),
assert(pila(NuevaPila)).
El añadido con respecto al post anterior es que usamos el predicado append que viene definido el Prolog. Este predicado append lo que hace es unir dos listas en una, en este caso definen pilas que es lo mismo.