22-12-2022, 21:30
13-03-2023, 15:40
Buenass, por casualidad tendrás la resolución del final ?. Saludoss.
13-03-2023, 21:17
hola, tambien necesito la resolucion posible , debo este final . gracias
04-12-2023, 23:21
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
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
08-12-2023, 21:04
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.
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.