Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
% p_jarras.pl % Problema de las jarras. % José A. Alonso Jiménez <https://jaalonso.github.io> % Sevilla, 25-mayo-2022 % ============================================================================= % Descripción del problema % ======================== % + Se tienen dos jarras, una de 4 litros de capacidad y otra de 3. % + Ninguna de ellas tiene marcas de medición. % + Se tiene una bomba que permite llenar las jarras de agua. % + ¿Cómo se puede lograr tener exactamente 2 litros de agua en la jarra % de 4 litros de capacidad?. % Representación del problema % =========================== % Un ESTADO es un par de números. El primero es el contenido de la jarra de 4 % litros y el segundo el de la de 3 litros. % estado_inicial(?E) se verifica si E es el estado inicial. estado_inicial(0-0). % estado_final(?E) se verifica si E es un estado final. estado_final(2-_). % sucesor(+E1,?E2) se verifica si E2 es un sucesor del estado E1. sucesor(X-Y,4-Y) :- X < 4. sucesor(X-Y,X-3) :- Y < 3. sucesor(X-Y,0-Y) :- X > 0. sucesor(X-Y,X-0) :- Y > 0. sucesor(X1-Y1,4-Y2) :- X1 < 4, T is X1+Y1, T >= 4, Y2 is Y1-(4-X1). sucesor(X1-Y1,X2-3) :- Y1 < 3, T is X1+Y1, T >= 3, X2 is X1-(3-Y1). sucesor(X1-Y1,X2-0) :- Y1 > 0, X2 is X1+Y1, X2 < 4. sucesor(X1-Y1,0-Y2) :- X1 > 0, Y2 is X1+Y1, Y2 < 3. % Búsqueda en profundidad con ciclos % ================================== % Solución del problema por búsqueda en profundidad con ciclos. % ?- [b_profundidad_con_ciclos]. % true. % % ?- profundidad_con_ciclos(S). % S = [0-0,4-0,4-3,0-3,3-0,3-3,4-2,0-2,2-0]