Hola,
Cuando me referia a enviar la respuesta en prolog me referia a que enviaran todos aquellos predicados que consideraran necesarios para darle solucion a este enigma, y por supuesto que una vez planteados mediante el uso de un algoritmo de busqueda (ejemplo : busqueda en profundidad) el backtraking te devuelve todas aquellas posibles soluciones que encuentre.
Al realizar este enigma yo considere que las orillas estaban a salvo cuando se necesita el minimo de granjeros para custodiar a aquellos elementos que se coman entre si, ejemplo:
sin_problemas(
estado(L1, L2)):-
es_seguro(L1),
es_seguro(L2).
es_seguro(
lado(_, Hombres, Zorras, Ocas, Granos)):-
minimo(Lobos, Obejas, R1), R1 =< Granjeros,
minimo(Obejas, Repollos, R2), R2 =< Granjeros.
pero puedes considerar tus restrinciones como gustes, la cuestion es encontrar la solucion que debe se != de llevarlos a todos en un solo viaje.
En cuanto la cantidad de botes, solo existe uno para cruzar de una orilla a otra y como restriccion tome que puede viajar la minima cantidad de granjeros necesarios para custodiar a aquellos elementos que se coman entre si.
Este enigma se me ocurrio publicarlo para probar el poder de razonamiento de aquellos asiduos a los Desafios - Wargames.
Espero haber sido mas explicito ahora, cualquier duda, pregunten sin pena.
Saludos...