UTNianos

Versión completa: Ayuda TP Logico
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola gente, espero que algún alma caritativa me pueda ayudar a termina el tp de paradigma lógico.
Tengo problemas con un punto en particular.
Adjunto la consigna (específicamente es el punto 2) (aclaro que lo pude resolver, pero me mandaron a rehacer un par de cosas y sinceramente no se me ocurre como hacerlo distinto a como lo hice, como lo habia hecho andaba)
[attachment=7325]

Cita:% Punto a
% solo halla para los personajes que comen bichos

cuantoEngordaA(Personaje,Peso):- findall(PesoBicho,(comio(Personaje,Bicho),pesoBicho(Bicho,PesoBicho)),LPesosBichos),
sumlist(LPesosBichos,Peso).

pesoBicho(vaquitaSanAntonio(_,PesoBicho),PesoBicho).
pesoBicho(hormiga(_),PesoBicho):- pesoHormiga(PesoBicho).
pesoBicho(cucaracha(_,_,PesoBicho),PesoBicho).

% Punto b
% sirve para todos, tanto para los que comen bichos como los que no lo hacen

cuantoEngordaB(Personaje,Peso):- findall(PesoPresa,(persigue(Personaje,Presa),peso(Presa,PesoPresa)),LPesosPresas),
sumlist(LPesosPresas,PesoPresas),
cuantoEngordaA(Personaje,PesoBichos),
Peso is PesoPresas + PesoBichos.

% Punto c

pesoPresa(Presa,PesoPresa):- persigue(_,Presa),
peso(Presa,Peso1),
cuantoEngordaB(Presa,Peso2),
PesoPresa is Peso1 + Peso2.

cuantoEngordaC(Personaje,Peso):- findall(PesoPresa,(persigue(Personaje,Presa),pesoPresa(Presa,PesoPresa)),LPesoPresa),
sumlist(LPesoPresa,Peso).

Esto es lo que hice hasta el momento, el problema surge en el punto C.

Espero que alguno me pueda ayudar pronto
Gracias
Si tan hasta las manos estás, en la página de pdep está resuelto este mismo TP, queda en vos y en tu conciencia moral para decidir que es lo correcto =P
Justamente es ese resuelto me base para hacer el tp que entregue y me mandaron a correguir...
¿Qué correcciones te hicieron?
(27-08-2013 00:00)Desert69 escribió: [ -> ]¿Qué correcciones te hicieron?

Y ademas algo que al menos a mi me parece raro es que tengas : cuantoEngordaA ,cuantoEngordaB y cuantoEngordaC? me parece que no esta muy bien y estaría faltando algo... ojo por ahí la corrección va por otro lado, pero es raro
(27-08-2013 11:10)CarooLina escribió: [ -> ]
(27-08-2013 00:00)Desert69 escribió: [ -> ]¿Qué correcciones te hicieron?

Y ademas algo que al menos a mi me parece raro es que tengas : cuantoEngordaA ,cuantoEngordaB y cuantoEngordaC? me parece que no esta muy bien y estaría faltando algo... ojo por ahí la corrección va por otro lado, pero es raro

Pedía diferentes implementaciones del cuantoEngorda, igual en mi grupo hicimos un solo cuantoEngorda ya que el último (el del punto c) cumple con todos los requerimientos de los puntos anteriores, por ende, si sacábamos el c sacábamos todos jaja.


Es medio rara tu resolución, llamás a un predicado que adentro usa a otro predicado, y ese otro predicado usa al primer predicado. Creo que la idea del punto es que hagas un predicado recursivo. Una posible solucion seria que hagas un predicado que tiene como argumentos una bestia, un bichox y el peso del bicho que es la suma de su peso y del peso de todos los que comio, ese predicado sería el recursivo y el cuantoEngorda se resumiría en hacer un findall.

edit: Recién vi que en el otro predicado usas el cuantoEngordaB, crei que era el cuantoEngordaC =P
El mismo enunciado le pide que haga tres predicados diferentes del "cuandoEngorda", pero no viene al caso igual.
Directo y al grano: Probá aplicando recursividad; mentalizá que tenés que sumar lo que comió el que se comió a tal otro, y ese tal otro a tal otr...; incluso hasta te puede servir de algo las anteriores consultas.


Arrivederci.
A buenísimo entonces jajaja yo por que a mi nunca me dieron uno así y eso no estaba bien
(27-08-2013 22:28)Baron Bomadil escribió: [ -> ]Es medio rara tu resolución, llamás a un predicado que adentro usa a otro predicado, y ese otro predicado usa al primer predicado. Creo que la idea del punto es que hagas un predicado recursivo.

Nunca vuelvas a escribir ni decir "llamar a un predicado" sin que te sangren los ojos =)

Se dice "relacionás bleh con blah mediante el predicado zarasa".
(28-08-2013 16:12)Desert69 escribió: [ -> ]
(27-08-2013 22:28)Baron Bomadil escribió: [ -> ]Es medio rara tu resolución, llamás a un predicado que adentro usa a otro predicado, y ese otro predicado usa al primer predicado. Creo que la idea del punto es que hagas un predicado recursivo.

Nunca vuelvas a escribir ni decir "llamar a un predicado" sin que te sangren los ojos =)

Se dice "relacionás bleh con blah mediante el predicado zarasa".

Same shit, odio prolog, el swi es un asco y el paradigma no me gusta así que no me voy a esforzar en decir bien las cosas =P funcional tiene toda la onda
(28-08-2013 21:01)Baron Bomadil escribió: [ -> ]
(28-08-2013 16:12)Desert69 escribió: [ -> ]
(27-08-2013 22:28)Baron Bomadil escribió: [ -> ]Es medio rara tu resolución, llamás a un predicado que adentro usa a otro predicado, y ese otro predicado usa al primer predicado. Creo que la idea del punto es que hagas un predicado recursivo.

Nunca vuelvas a escribir ni decir "llamar a un predicado" sin que te sangren los ojos =)

Se dice "relacionás bleh con blah mediante el predicado zarasa".

Same shit, odio prolog, el swi es un asco y el paradigma no me gusta así que no me voy a esforzar en decir bien las cosas =P funcional tiene toda la onda


Off-topic:
Funcional rules
Yo tambien estudie este paradigma sin ganas y termine sacando 6. El swi es asquerosisimo
URLs de referencia