Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte][Paradigmas de Programación] Parcial lógico resuelto
Autor Mensaje
gan Sin conexión
Profesor del Modulo A
:ö:
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 286
Agradecimientos dados: 87
Agradecimientos: 143 en 47 posts
Registro en: Apr 2011
Mensaje: #1
[Aporte][Paradigmas de Programación] Parcial lógico resuelto Parciales Paradigmas de Programación
Es de la cursada de Scarcella. En la resolución falta el punto 4 nada más.

   

   

Spoiler: Mostrar

% 1-
permiteEntrar(Casa, Mago):-
casa(Casa),
mago(Mago, _, _),
Casa \= slytherin.
permiteEntrar(slytherin, Mago):-
mago(Mago, Sangre, _),
Sangre \= impura.

% 2-
tieneCaracter(Mago, Casa):-
casa(Casa),
mago(Mago, _, Caracteristicas),
forall(caracteriza(Casa, C), member(C, Caracteristicas)).

% 3-
casaPosible(Mago, Casa):-
casa(Casa),
mago(Mago, _, _),
tieneCaracter(Mago, Casa),
permiteEntrar(Casa, Mago),
not(odia(Mago, Casa)).

% 5-
esMala(fueraDeCama, 50).
esMala(irA(Lugar), Puntos):- lugarProhibido(Lugar, Puntos).

esBuena(_, buenaAccion(Motivo, Puntos), Puntos).
esBuena(Mago, responder(_, Puntos, Profesor), PuntosFinales):-
alumnoFavorito(Profesor, Mago),
PuntosFinales is Puntos * 2.
esBuena(Mago, responder(_, Puntos, Profesor), PuntosFinales):-
alumnoOdiado(Profesor, Mago),
PuntosFinales is 0.
esBuena(Mago, responder(_, Puntos, Profesor), PuntosFinales):-
not(alumnoFavorito(Profesor, Mago)),
not(alumnoOdiado(Profesor, Mago)),
PuntosFinales is Puntos.

acciones(Mago, Acciones, Cantidad):-
findall(Accion, hizo(Mago, Accion), Acciones),
length(Acciones, Cantidad).

accionesMalas(Mago, Acciones, AccionesMalas, Cantidad):-
findall(Accion, (member(Accion, Acciones),
esMala(Accion, _)),
AccionesMalas),
length(AccionesMalas, Cantidad).

esBuenAlumno(Mago):-
mago(Mago, _, _),
acciones(Mago, Acciones, CantidadAcciones),
CantidadAcciones > 0,
accionesMalas(Mago, Acciones, _, CantidadAccionesMalas),
CantidadAccionesMalas < 1.

% 6-
puntosDeCasa(Casa, Total):-
casa(Casa),
esDe(Mago, Casa),
acciones(Mago, Acciones, _),
puntosMalas(Mago, Acciones, PuntosMalas),
puntosBuenas(Mago, Acciones, PuntosBuenas),
Total is PuntosBuenas - PuntosMalas.

puntosMalas(Mago, Acciones, Total):-
findall(Punto, (member(Accion, Acciones),
esMala(Accion, Punto)),
Puntos),
sumlist(Puntos, Total).

puntosBuenas(Mago, Acciones, Total):-
findall(Punto, (member(Accion, Acciones),
esBuena(Mago, Accion, Punto)),
Puntos),
sumlist(Puntos, Total).

% 7-
casaGanadora(Casa):-
puntosDeCasa(Casa, Total),
forall((puntosDeCasa(OtraCasa, OtroTotal), Casa \= OtraCasa), Total > OtroTotal).

(Este mensaje fue modificado por última vez en: 15-07-2014 18:05 por gan.)
15-07-2014 17:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.