UTNianos

Versión completa: Consulta FInal 10/02/2018
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas, necesitaria la ayuda para resolver la parte de Logico. Alguno puede ayudarme por favor?

Parte B
Luego de leer el enunciado de Objetos, un desarrollador generó esta solución en Prolog, para poder saber como quedan los animales luego de que el granjero los alimenta.
% relaciona granjero con animales que pueden ser:
% chancho(kilos) o caballo(energia, racion)
granjero(beto, chancho(24)).
granjero(beto, caballo(150,20)).
granjero(beto, chancho(120)).
granjero(julieta, caballo(120,10)).

alimentar(Granjero, Animal):-
granjero(Granjero, caballo(Energia, Racion)),
Energia = Energia * (1 + Racion/100).
alimentar(Granjero, Animal):-
granjero(Granjero, chancho(Kilos)),
Kilos =< 50,
Kilos = Kilos + 3.

alimentar(Granjero, Animal):-
granjero(Granjero,chancho(Kilos)),
Kilos = Kilos + 2.


A - La solución tiene algunos problemas conceptuales. Indicar los que considere más importantes (al menos tres) y justificar por qué son errores.
B - Implemente una solución alternativa que arregle los problemas detectados, teniendo en cuenta que debe respetar la consigna original.
C - ¿Es inversible la nueva solución? Ejemplificar mostrando cómo responde a consultas diversas.
A)En los predicados alimentar(Granjero,Animal):- la variable Animal no se utiliza en ningun momento
En este mismo predicado , se repite logica al momento de verificar el peso del chancho, ademas de que si el peso es mayor que 50
verifica en la primera Kilo =< 50 ? no , entonces va al prox predicado que no tiene restriccion del peso entonces habria dos respuestas
respuestas posible cuando deberia ser una...
Para asignarle un valor a una variable se utiliza el IS y no el =, para poder ligar la variable con el valor, la variable debe estar vacia,
sino se estaria comparando su valor

B)alimentar(Granjero,caballo(Energia,Racion),NuevaEnergia):-
granjero(Granjero,caballo(Energia,Racion)),
NuevaEnergia is Energia * (1 + Racion / 100).

alimentar(Granjero,chancho(Kilos),NuevosKilos):-
modificarKilos(Granjero,Kilos,NuevosKilos).

modificarKilos(Granjero,Kilos,NuevosKilos):-
granjero(Granjero,chancho(Kilos)),
Kilos =< 50,
NuevosKilos is (Kilos + 3).

modificarKilos(Granjero,Kilos,NuevosKilos):-
granjero(Granjero,chancho(Kilos)),
Kilos > 50,
NuevosKilos is (Kilos + 2).

C)Si es inversible, ya que estoy ligando al granjero y el peso del chancho antes de verificar la condicion

>>alimentar(Granjero,Animal,NuevoValor).
Quien = beto,
Animal = caballo(150, 20),
NuevoValor = 180.0 ;
Quien = julieta,
Animal = caballo(120, 10),
NuevoValor = 132.0 ;
Quien = beto,
Animal = chancho(24),
NuevoValor = 27 ;
Quien = beto,
Animal = chancho(120),
NuevoValor = 122.

alimentar(beto,chancho(24),NuevoKilo).
NuevoKilo = 27 ;
URLs de referencia