Closed Moisnt closed 1 year ago
Hola!
Esta sería una forma de hacer que se logre lo que buscas:
perro(p1).
gato(g1).
raton(r1).
predador(A,B) :- perro(A), gato(B).
predador(A,B) :- gato(A),raton(B).
predador(A,C) :- predador(A,B), predador(B,C).
Se define una tercera regla, predador(A,C) :- predador(A,B), predador(B,C).
, que utiliza la regla transitiva de la relación de depredación. Esta regla indica que si A es un depredador de B y B es un depredador de C, entonces A es un depredador de C. Esto permite encontrar depredadores indirectos, es decir, si un animal A es un depredador de B y B es un depredador de C, entonces A es también un depredador de C.
Por ejemplo, usando este código podemos obtener predador(p1,r1)
en el modelo. En este caso, como el perro no es un depredador directo del raton, se buscarán depredadores indirectos y se encontrará que el perro es un depredador del gato y el gato es un depredador del raton.
Si te quedan dudas siéntete libre de preguntar por acá!
Estaba jugando con clingo y me surgió una duda, si defino los predicados perro(p1). gato(g1). raton(r1). y luego quiero definir "predadores" está ¿bien implementado hacer predador(A,B):-perro(A), gato(B). predador(A,B):gato(A),raton(B). ? Porque también quería que perro fuera predador de raton al hacer eso pero no funcionó como esperaba.