UTNianos

Versión completa: [Aporte][Final] Final de Paradigmas de Programación - Diciembre 2022
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas!

Acá les dejo el final de Paradigmas de Programación que se tomó el 17 de diciembre del 2022.
Buenass, por casualidad tendrás la resolución del final ?. Saludoss.
hola, tambien necesito la resolucion posible , debo este final . gracias
Hola, tiro mis posibles respuestas hasta el momento, pueden estar masomenos (!)

parte A:

a Definir los tipos de las restriccionesDeCompra(puse algunas)

data Producto = Prod { nombre :: String, precio :: Int } deriving Show

queEmpieceConA::Producto->Bool
queEmpieceConA = ( == 'a' ) .head.nombre


barato::Producto->Bool
barato = ( <50 ).precio

restriccionesDeCompra::[Producto->Bool]
restriccionesDeCompra = [ queEmpieceConA, barato ]

b) que acepte un caracter y esta relacionado con APLICACION PARCIAL
queEmpieceConChar::Char->Producto->Bool
queEmpieceConChar caracter = ( == caracter ) .head.nombre

c) una lista de productos que filtre y me diga cual cumple con todas las restricciones
----EJEMPLOS-------
anana= Prod "anana" 10
morcilla = Prod "morcilla" 20
azucar = Prod "azucar" 20

listaProd = [anana, morcilla, azucar]

--FUNCIONES EN SI-----
cumpleConTodasRestriciones producto = all (\n -> n producto ) restriccionesDeCompra

listadoFiltr listadoProductos = filter (\n -> cumpleConTodasRestriciones n ) listadoProductos


Parte B
1. a) las bebidas alcoholicas son functores, tienen tipo y son similares (no estoy seguro aca)
B) creo que es Verdadero, se supone que aclara las relaciones entre las bebidas
c) creo que es verdadero, no es inversible para saber que persona es mitad gaseosa mitad alcoholica

2. creo que busca que individuo toma una cantidad similar de gaseosas que bebidas alcoholicas.

el resto me falta
Estoy resolviendolo la parte B:

1) a) Falso, un findall está siendo repetido cuando podria ser:

tieneProblemas(Persona):-
findall(BA,(toma(Persona, Bebida),tieneAlcohol(Bebida)),BAs), % BA: Bebidas Alcoholicas
findall(T,toma(Persona, T),Ts),
length(BAs, CBAs),
length(Ts, CTs),
CTs is CBAs

y delegando la logica particular a un predicado aparte tieneAlcohol.

1) b) Falso, no es declarativa, es mas bien imperativa porque estoy de alguna manera "contando" la cantidad de bebidas y comparandolas

1) c) Verdadero, tieneAlcohol/1 es polimorfica para todas las bebidas
_____

2) (no estoy muy seguro)
pregunta para qué persona se cumple que la cantidad total de bebidas que toma es igual a la cantidad de cervezas con alcohol + la cantidad de vinos que toma esa persona.

_____

3)

tieneProblemasV2(Persona):- not(tomaAlgunaSinAlcohol(Persona)).

tomaAlgunaSinAlcohol(Persona):-
toma(Persona, Bebida),
sinAlcohol(Bebida).

sinAlcohol(Bebida):- not(tieneAlcohol(Bebida)).

tieneAlcohol(vino(_,_)).
tieneAlcohol(cerveza(_,_,A)):- A > 0.
URLs de referencia