Está en la página 1de 34

Universidad Tecnolgica Nacional

FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013

Cartilla de prcticos modelo


Prolog

Gua de prcticos Prolog Pgina 1


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013

Semana 1

Ejercicio 1
Usando consola:

a) Comprobar que 150 sea un entero


b) Comprobar que 12.5 es un float
c) Comprobar que Juan Perez es un String
d) Comprobar que 20 es la suma de 5 y 15
e) Comprobar que -5 es la resta entre 5 y 10
f) Mostrar el cociente entre 24560 y 756
g) Mostrar el cociente entero de la divisin anterior
h) Mostrar el resto de la divisin entre 28753 y 15963
i) Demostrar que 5 es la raz cuadrada de 25.
j) Cul es el resultado de sumar 35678 con 9876?
k) Puede comprobar que el resultado anterior es la suma de 35678 y 9876?
l) Compruebe que los valores absolutos de 4 y -4 son iguales.

Resolucion

Ejercicio 2
Definicin de predicados:

a) Escribir un predicado ++ con aridad 2, que sume a un nmero un 1.


b) Defina un predicado distinto(X,Y) que diga si X es distinto a Y.
c) Definir un predicado suma (X,Y,Z) que devuelva verdadero si Z es la suma de X y de Y.
d) Definir el predicado mayor(X,Y,Z) que devuelve verdadero si Z es mayor que X e Y
e) Escribir un predicado que determine la siguiente funcin f(x) va a ser:
0. Si x <= 10
1. Si 10 < x <=20
2. Si x > 20

Resolucin:

Ejercicio 3

Gua de prcticos Prolog Pgina 2


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Se nos ha solicitado desarrollar una aplicacin en Prolog que nos permita conocer el
estado acadmico de los alumnos de un curso de nuestra facultad
Se conoce que los alumnos son Juan, Jos y Ana.
Se conoce tambin que rindieron dos parciales y los resultados fueron los siguientes:
Los tres alumnos aprobaron el primer parcial
Solo Ana y Jos aprobaron el segundo parcial
Se necesita consultar:
Si Francisco es alumno del curso.
Si Ana es una alumna regular.
Los alumnos regulares del curso, entendindose como tal a aquellos que tiene
aprobados ambos parciales.

Semana 2

Ejercicio 4
Diagnstico de enfermedades

Dados los siguientes datos de sntomas de enfermedades:

Sntoma Enfermedad

Fiebre Gripe

Tos Gripe

Cansancio Anemia

Ardor Gastritis

Nausea Gastritis

Vomitos Gastritis

Vomitos Apendicitis

Fiebre Apendicitis

Y los siguientes remedios:

Remedio Enfermedad

Jarabe Gripe

Aspirinas Gripe

Gua de prcticos Prolog Pgina 3


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Vitaminas Anemia

Dieta Gastritis

Cirujia Apendicitis

a) Escriba los hechos para cada sntoma


b) Determine que enfermedades causan vmitos.
c) Determine que sntomas tiene la gastritis.
d) Escriba los hechos para cada remedio.
e) Escriba un predicado enfermo_de que me permita saber de acuerdo a un sntoma qu
enfermedades podra tener.
f) Escriba un predicado remedio_para que me permita saber qu remedios hay para un
sntoma especfico (No interesa saber la enfermedad)
g) Dados los siguientes hechos:

enfermo(juan,gripe).

enfermo(alicia,anemia).

enfermo(patricio,apendicitis).

enfermo(pedro,gripe).

enfermo(ricardo,gripe).

enfermo(roxana,gastritis).

Escriba un predicado que muestre los sntomas para una persona determinada.

h) Responda las siguientes preguntas:


a. Para qu sirve el jarabe?
b. A quin le servira tomar jarabe?
c. Puedo usar aspirinas para curar el sntoma de ardor?
d. Quines tienen sntoma de fiebre?

i) Se conoce adems que cada enfermedad tiene asociada una determinada cantidad de
das de reposo mnimo y mximo:
Enfermedad Das de reposo Das de reposo

mnimo mximo

Gua de prcticos Prolog Pgina 4


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Gripe 3 6

Anemia 6 10

Gastritis 3 5

Apendicitis 5 7

Dependiendo de los sntomas, se perder una cierta cantidad de Kg de peso


dependiendo diferentes condiciones:

Sntoma Peso perdido (Kg)

Fiebre 20% del peso actual

Tos 1 Kg si pasaron 3 dias

Cansancio 1 Kg cada dos dias

Ardor 0.5 Kg por dia

Nausea 1.5 Kg si no se ha llegado al reposo mnimo, 2 Kg


si no se excede el reposo mximo y 2.5
Kg si se excedi el reposo mximo

Vmitos 0.7 Kg si la enfermedad es gastritis y 1.3 Kg si la


enfermedad es apendicitis

Conociendo esto, responda las siguientes preguntas:

a. Cunto peso perdi Alicia, si pesaba inicialmente 45 Kg y lleva 7 das de


reposo?
b. Cunto peso perdi Patricio, si pesaba 80 Kg, pero slo tena Vmitos como
sntoma?
c. Cul ser el peso final de Roxana, si inicialmente pesaba 50 Kg y lleva 4 das de
reposo? (No sabemos cul era su sntoma, asi que la respuesta deber
contemplar esto tambin.
d. Si una persona pesaba 65 Kg y despus de 3 das de reposo ha perdido 1.5
Kg, qu enfermedad puede tener?

Resolucin

Gua de prcticos Prolog Pgina 5


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013

Ejercicio 5
Caso de estudio/Arribos

Se ha solicitado el desarrollo de un programa lgico que permita realizar consultas


relacionadas con los arribos de vuelos del da de la fecha, del aeropuerto de nuestra ciudad.
Para la base de conocimiento del dominio tener en cuenta las siguientes tablas:

Se solicita definir las reglas que nos permitan responder las siguientes consultas:
1. Informar el nmero de vuelo y el estado de los arribos cuya procedencia es
Aeroparque.
2. Informar el nmero de vuelo, la lnea y la procedencia de los vuelos cancelados.

Gua de prcticos Prolog Pgina 6


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
3. Informar nmero de vuelo, procedencia y hora estimada de arribo de los arribos que
pertenezcan a una determinada lnea.
4. Mostrar procedencia y hora de arribo de los vuelos cuyo estado es Aterrizado.

Resolucin

vuelo('LN 481','Santiago de Chile', '11:20', '11:30', 'Aterrizado', 1).

vuelo('AU 2358','Salta', '13:00', '13:05', 'Aterrizado', 2).

vuelo('CM 101','Panama', '15:00', '', 'Demorado', 3).

vuelo('G3 7364','Ro de Janeiro', '15:40', '16:00', 'Aterrizado',2).

vuelo('LN 2324','Aeroparque', '16:00', '', 'Cancelado', 2).

linea(1, 'Lan Chile').

linea(2, 'Austral').

linea(3, 'Copa Airlines').

linea(4, 'Gol').

Ejercicio 6

Quin mat a ta gata?

Armar un programa Prolog que resuelva el siguiente problema lgico:


Un asesino siempre odia a su vctima y nunca es ms rico que ella. El asesino de
la ta Agatha, adems, vive en la mansin Dreadbury.
Ta Agatha, el carnicero y Charles son las nicas personas que viven en la
mansin Dreadbury.
Charles odia a todas las personas de la mansin que no son odiadas por la ta
Agatha.
Agatha odia a todos los que viven en la mansin, excepto al carnicero.

Gua de prcticos Prolog Pgina 7


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Quien no es odiado por el carnicero y vive en la mansin, es ms rico que ta
Agatha
El carnicero odia a las mismas personas que odia ta Agatha.
Al programa le tengo que poder preguntar quin es el asesino de la ta Agatha, y
tieneque brindar una sola respuesta.

Resolucin

%Quin mat a Ta Agatha???

vive_mansion(agatha).
vive_mansion(carnicero).
vive_mansion(charles).
odia(agatha, X):- vive_mansion(X), X\=carnicero.
odia(charles,X):- vive_mansion(X), not(odia(agatha, X)).
odia(carnicero,X):- odia(agatha, X).
mas_rico(X, agatha):- vive_mansion(X), not(odia(carnicero,X)).
asesino(X, Y):- vive_mansion(X), odia(X,Y), not(mas_rico(X,Y)).

Ejercicio 7

Empleados Pyme

Se necesita desarrollar un programa bajo el paradigma lgico para una pyme de nuestra
ciudad. En esta empresa trabajan tanto empleados cuyo domicilio se encuentra en la ciudad
como en otras ciudades de la provincia. As mismo, la empresa dispone de empleados
efectivos o contratados. A los contratados se les paga por hora, de acuerdo a la cantidad de
horas trabajadas al mes, y por lo general, pertenecen al rea de Limpieza. En el caso de los
efectivos, tienen un salario bsico al cual se le suma un porcentaje del mismo, de acuerdo a la
cantidad de aos de antigedad y un coeficiente de incremento por antigedad.
El salario de los empleados contratados se calcula multiplicando el precio por hora, cantidad de
horas al da y la cantidad de das trabajados al mes. El salario de los empleados efectivos se
calcula sumndole al bsico el producto del salario bsico por la cantidad de aos de
antigedad, multiplicado a su vez por el coeficiente de incremento
dividido 100.

Gua de prcticos Prolog Pgina 8


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Cabe aclarar que solo a los empleados contratados cuyo domicilio no se encuentre en la ciudad
de Crdoba, se les paga un vitico de $250 al mes.
La base de conocimiento se encuentra representada en las siguientes tablas:

Trabajador:

rea:

Localidad:

Se requiere definir las reglas que permitan responder lo siguiente:

Gua de prcticos Prolog Pgina 9


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
1) Legajo, cantidad de horas trabajadas al mes y nombre del rea en la que trabajan todos
losempleados contratados.
2) Legajo, nombre, apellido, nombre de la localidad, nombre del rea y cantidad de
horastrabajadas por mes de aquellos empleados contratados que trabajen al mes ms de
125hs.
3) Legajo, nombre, apellido, nombre de la localidad, nombre del rea y antigedad de
aquellos empleados efectivos con ms de 10 aos de antigedad.
4) Legajo y salario (sin incluir los viticos) de todos los empleados, tanto contratados
comoefectivos.
5) Legajo, nombre, apellido, rea y localidad de los empleados a los que les corresponde
viticos.
6) Legajo y salario final (incluyendo viticos a quines les corresponda) de todos los
empleados, tanto contratados como efectivos.

Resolucin

area(1,'Gerencia').

area(2,'Marketing').

area(3,'Limpieza').

localidad(1,'Crdoba').

localidad(2,'Capilla del Monte').

localidad(3,'Calamuchita').

localidad(4,'Laborde').

trabajador(111,'Mara','Richardi',domicilio('Jujuy',142,1),3,contrato(24,25.5,5)).

trabajador(222,'Diana','Bambini',domicilio('Calle 1',339,3),3,contrato(20,25.5,7)).

trabajador(333,'Lara','Pointer',domicilio('Per',721,3),2,efectivo(2200,1,2)).

Gua de prcticos Prolog Pgina 10


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
trabajador(444,'Victoria','Dove',domicilio('Jujuy',344,4),2,efectivo(2000,12,1.5)).

trabajador(555,'Ximena','Coraggio',domicilio('Salta',545,1),3,contrato(24,25.5,8)).

trabajador(666,'Gaspar','Gioia',domicilio('Chile',123,2),3,contrato(20,25.5,7)).

trabajador(777,'Vera','Petro',domicilio('Salta',888,2),1,efectivo(2500,8,2.5)).

trabajador(888,'Gastn','Bravi',domicilio('Lujn',104,1),2,efectivo(1800,9,2)).

punto_1(Leg,CantHs,NomArea):-
trabajador(Leg,_,_,_,IDAREA,contrato(X,_,Y)),area(IDAREA,NomArea),CantHs is X*Y.

punto_2(Leg,Nom,Ap,NomLoc,NomArea,CantHs):-
trabajador(Leg,Nom,Ap,domicilio(_,_,IDLOC),IDAREA,contrato(X,_,Y)),localidad(IDLOC,NomLo
c),area(IDAREA,NomArea),CantHs is X*Y,CantHs>125.

punto_3(Leg,Nom,Ap,NomLoc,NomArea,Ant):-
trabajador(Leg,Nom,Ap,domicilio(_,_,IDLOC),IDAREA,efectivo(_,Ant,_)),localidad(IDLOC,NomL
oc),area(IDAREA,NomArea),Ant>10.

punto_4(Leg,Sal):-(trabajador(Leg,_,_,_,_,contrato(X,Y,Z)), Sal is X*Y*Z);


trabajador(Leg,_,_,_,_,efectivo(X,Y,Z)), Sal is X+(X*Y*Z)/100.

punto_5(Leg,Nomb,Ap,Area,Loc):-
trabajador(Leg,Nomb,Ap,domicilio(_,_,IDLOC),IDAREA,contrato(_,_,_)),
area(IDAREA,Area),localidad(IDLOC,Loc),IDLOC =\=1.

punto_6(Leg,Sal):-(trabajador(Leg,_,_,domicilio(_,_,IDLOC),_,contrato(X,Y,Z)),IDLOC=:=1,Sal
is X*Y*Z);

(trabajador(Leg,_,_,domicilio(_,_,IDLOC),_,contrato(X,Y,Z)),IDLOC=\=1,Sal is X*Y*Z+250);

Gua de prcticos Prolog Pgina 11


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
(trabajador(Leg,_,_,_,_,efectivo(X,Y,Z)), Sal is X+(X*Y*Z)/100).

Semana 3

Ejercicio 8
Ranking ATP 2012

La Asociacin de Tenis Profesional (ATP), en su pgina web, ha dado la lista y estadstica de


los mejores jugadores de tenis del mundo. En la lista (adjunta como hechos al final del
ejercicio), se pueden ver los siguientes datos:

1. Ranking
2. Nombre
3. Nacionalidad
4. Partidos ganados
5. Partidos perdidos
6. Aces totales
7. Promedio de aces por partido
8. Porcentaje de servicio ganados
9. Porcentaje de partidos ganados en el servicio
10. Porcentaje de breakpoints ganados
11. Porcentaje de breakpoints salvados

Teniendo en cuenta esta informacin, responda las siguientes preguntas creando predicados
segn sea necesario:

a) Nombre y posicin de todos los tenistas argentinos


b) Quines son los tenistas que tienen ms del 80% de partidos ganados en el servicio?
c) Quines son los tenistas que salvaron entre 50 y 60 breakpoints pero que estn
ubicados despus de la posicin nmero 20 del ranking?
d) Dado un jugador en especial, Puede obtener el nombre de todos sus compatriotas que
tienen mayor nmero de partidos ganados?
e) Dado un jugador, puede decirme cul fue el porcentaje de partidos ganados y si tiene
ms chances de salvar un breakpoint o hacer un breakpoint?
f) Se dice que un jugador tendr ms chances de ganar si el promedio de partidos
ganados es mayor que el de su oponente, no est separado por ms de 5 posiciones
del rival en el ranking y tiene el mayor porcentaje de servicios ganados. Implemente una
regla que permita saber quin ser el ganador entre dos jugadores.

Se conoce tambin las debilidades y fortalezas de los jugadores, en particular, se conoce que:

En cancha de csped, los ganadores son:

Gua de prcticos Prolog Pgina 12


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
novak_djokovic, jo-wilfried_tsonga, milos_raonic, marcos_baghdatis, jarkko_nieminen,
andy_murray, john_isner, sam_querrey, kevin_anderson, martin_klizan, richard_gasquet,
david_ferrer

En cancha de arcilla, los ganadores son:

novak_djokovic, andy_roddick, philipp_kohlschreiber, alexandr_dolgopolov,


julien_benneteau, tommy_haas, fernando_verdasco, jurgen_melzer, tomas_berdych,
ikhail_youzhny, andreas_seppi, stanislas_wawrinka, david_ferrer, juan_martin_del_potro

En cancha de cemento, los ganadores son:

florian_mayer, david_ferrer, pablo_andujar, roger_federer, marin_cilic, janko_tipsarevic,


nicolas_almagro, gilles_simon, mardy_fish, thomaz_bellucci, novak_djokovic, andy_roddick,
juan_martin_del_potro

En cancha de sintetica, los ganadores son:

kei_nishikori, rafael_nadal, viktor_troicki, juan_martin_del_potro, juan_monaco, jeremy_chardy,


feliciano_lopez, marcel_granollers, novak_djokovic, andy_roddick, david_ferrer,
juan_martin_del_potro

Teniendo esta informacin, realice las siguientes actividades y responda las preguntas:

a) Escriba el predicado ganador_en(tipo_cancha, X) para cada tipo de cancha, que


evale como verdadero a X (un jugador) si pertenece a la lista de jugadores
mencionada.
b) Evale para distintos jugadores si son ganadores o no en los distintos tipos de canchas.
Puede obtener un listado de todos los jugadores que ganarn en csped?
c) Tomando distintos jugadores como entrada, escriba un predicado que muestre las
superficies sobre las que podr ganar ese jugador (se debern evaluar todas las
superficies).
d) Reescriba el predicado del punto anterior pero usando una lista de tipos de superficie
como entrada (adems del nombre del jugador).
e) Escriba un predicado que permita determinar para una lista de jugadores en una cancha
del tipo arcilla, quienes tendrn ms posibilidades de ganar. Usar la siguiente lista:
[tommy_haas, andy_murray, gilles_simon, feliciano_lopez]
f) Escriba un predicado que permita contabilizar la cantidad de superficies sobre las
cuales un jugador puede ganar. Usar como entrada el nombre del jugador y una lista
con los distintos tipos de superficie.
g) Utilice el predicado calculado en el punto f de la primera seccin para determinar si el
primer jugador de la siguiente lista puede ganarle al resto [jurgen_melzer, john_isner,
julien_benneteau, feliciano_lopez, marin_cilic, mardy_fish, thomaz_bellucci,
marcel_granollers]

Resolucin

jugador(1,roger_federer, sui, 61, 8,559, 8.1,78,91,42,69).

Gua de prcticos Prolog Pgina 13


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
jugador(2,novak_djokovic, srb, 65, 11,447, 5.9,74,87,46,67).

jugador(3,andy_murray, gbr, 50, 12,455, 7.3,74,84,41,68).

jugador(4,rafael_nadal, esp, 42, 6,160, 3.3,75,88,49,71).

jugador(5,david_ferrer, esp, 62, 14,238, 3.1,73,85,45,64).

jugador(6,jo-wilfried_tsonga, fra, 48, 3,547, 8.3,76,87,42,70).

jugador(7,tomas_berdych, cze, 50, 18,545, 8.0,77,87,44,70).

jugador(8,juan_martin_del_potro, arg, 53, 14,461, 6.9,74,87,44,68).

jugador(9,janko_tipsarevic, srb, 52, 21,575, 7.9,76,85,40,64).

jugador(10,juan_monaco, arg, 38, 16,88, 1.6,67,77,42,58).

jugador(11,nicolas_almagro, esp, 53, 18,577, 8.1,77,86,39,62).

jugador(12,john_isner, usa, 43, 18,917, 15.0,78,91,31,73).

jugador(13,richard_gasquet, fra, 38, 19,311, 5.5,73,84,42,65).

jugador(14,milos_raonic, can, 43, 17,921, 15.4,83,93,39,74).

jugador(15,kei_nishikori, jpn, 35, 17,125, 2.4,69,78,39,58).

jugador(16,marin_cilic, cro, 34, 16,311, 6.2,72,81,43,60).

jugador(17,stanislas_wawrinka, sui, 32, 17,367, 7.5,73,83,44,66).

jugador(18,gilles_simon, fra, 38, 22,247, 4.1,69,76,41,59).

jugador(19,philipp_kohlschreiber, ger, 41, 21,474, 7.6,74,85,45,65).

jugador(20,alexandr_dolgopolov, ukr, 28, 21,402, 8.2,75,80,41,62).

jugador(21,tommy_haas, ger, 27, 14,257, 6.3,75,83,38,64).

jugador(22,sam_querrey, usa, 31, 22,590, 11.1,80,86,38,64).

jugador(23,fernando_verdasco, esp, 29, 19,237, 4.9,71,82,40,65).

jugador(24,marcel_granollers, esp, 20, 21,171, 4.2,69,74,34,57).

jugador(25,florian_mayer, ger, 22, 23,167, 3.7,71,78,39,60).

jugador(26,andreas_seppi, ita, 32, 24,223, 4.0,70,78,44,58).

jugador(27,andy_roddick, usa, 23, 16,358, 9.2,75,84,36,60).

Gua de prcticos Prolog Pgina 14


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
jugador(28,mardy_fish, usa, 21, 11,301, 9.4,78,85,44,66).

jugador(29,feliciano_lopez, esp, 23, 23,468, 10.2,77,86,38,71).

jugador(30,mikhail_youzhny, rus, 29, 17,199, 4.3,71,80,40,60).

jugador(31,jeremy_chardy, fra, 23, 18,304, 7.4,74,81,38,68).

jugador(32,viktor_troicki, srb, 25, 25,379, 7.6,71,74,43,56).

jugador(33,julien_benneteau, fra, 25, 21,310, 6.7,71,79,42,62).

jugador(34,martin_klizan, svk, 18, 12,101, 3.4,70,76,44,60).

jugador(35,jurgen_melzer, aut, 17, 21,175, 4.6,69,75,44,57).

jugador(36,marcos_baghdatis, cyp, 30, 22,334, 6.4,73,80,41,61).

jugador(37,jarkko_nieminen, fin, 25, 24,130, 2.7,67,75,42,56).

jugador(38,kevin_anderson, rsa, 25, 22,507, 10.8,74,85,35,65).

jugador(39,thomaz_bellucci, bra, 22, 18,203, 5.1,71,78,38,62).

jugador(40,pablo_andujar, esp, 19, 25,71, 1.6,65,68,40,52).

%a- Nombre y posicin de todos los tenistas argentinos

%jugador(P,N,arg,_,_,_,_,_,_,_,_).

% b)Quines son los tenistas que tienen ms del 87% de partidos ganados

% en el servicio.

punto_b(N,Nac,P):-jugador(_,N,Nac,_,_,_,_,_,P,_,_), P>87.

% c)Quines son los tenistas que salvaron entre 50 y 60 break points

% pero que estn ubicados despus de la posicin nmero 20 del ranking?

punto_c(P,N,BP):-jugador(P,N,_,_,_,_,_,_,_,_,BP), BP>=50, BP=<60, P>=20.

Gua de prcticos Prolog Pgina 15


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013

% d)Dado un jugador en especial, Puede obtener el nombre de todos sus

% compatriotas que tienen mayor nmero de partidos ganados?

punto_d(J,C,PG):-jugador(_,J,N,PGJ,_,_,_,_,_,_,_), jugador(_,C,N,PG,_,_,_,_,_,_,_), PG>PGJ.

% e)Dado un jugador, puede decirme cul fue el porcentaje de partidos

% ganados y si tiene ms chances de salvar un break point o hacer un

% break point?

punto_e(J,P):-jugador(_,J,_,PG,PP,_,_,_,_,BPG, BPS), P is PG*100/(PG+PP), (BPG>=BPS,


write('Tiene ms chances de ganar un breakpoint'), ! ; write('Tiene mas chances de salvar un
breakpoint')).

%f)Se dice que un jugador tendr ms chances de ganar si el promedio de partidos ganados es
mayor que el de su oponente, no est separado por ms de 5 posiciones del rival en el ranking
y tiene el mayor porcentaje de servicios ganados. Implemente una regla que permita quin ser
el ganador entre dos jugadores.

punto_f_prom(J,Prom):-jugador(_,J,_,PG,PP,_,_,_,_,_,_),Prom is PG/(PG+PP).

punto_f_distancia(J1,J2,D):-jugador(R1,J1,_,_,_,_,_,_,_,_,_),jugador(R2,J2,_,_,_,_,_,_,_,_,_), D
is abs(R1-R2).

punto_f(J1,J2):-punto_f_prom(J1,P1),

punto_f_prom(J2,P2),P1>P2,

punto_f_distancia(J1,J2,D), D=<5,

jugador(_,J1,_,_,_,_,_,PSG1,_,_,_),

jugador(_,J2,_,_,_,_,_,PSG2,_,_,_), PSG1>PSG2.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%SEGUNDA PARTE - LISTAS

Gua de prcticos Prolog Pgina 16


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Punto a

ganador_en(cesped, X):-member(X,[novak_djokovic,jo-
wilfried_tsonga,milos_raonic,marcos_baghdatis,jarkko_nieminen,andy_murray,john_isner,sam_
querrey,kevin_anderson,martin_klizan,richard_gasquet,david_ferrer]),!.

ganador_en(arcilla, X):-
member(X,[novak_djokovic,andy_roddick,philipp_kohlschreiber,alexandr_dolgopolov,julien_ben
neteau,tommy_haas,fernando_verdasco,jurgen_melzer,tomas_berdych,ikhail_youzhny,andreas
_seppi,stanislas_wawrinka,david_ferrer,juan_martin_del_potro]),!.

ganador_en(cemento, X):-
member(X,[florian_mayer,david_ferrer,pablo_andujar,roger_federer,marin_cilic,janko_tipsarevic
,nicolas_almagro,gilles_simon,mardy_fish,thomaz_bellucci,novak_djokovic,andy_roddick,juan_
martin_del_potro]),!.

ganador_en(sintetica, X):-member(X,
[kei_nishikori,rafael_nadal,viktor_troicki,juan_martin_del_potro,juan_monaco,jeremy_chardy,feli
ciano_lopez,marcel_granollers,novak_djokovic,andy_roddick,david_ferrer,juan_martin_del_potr
o]),!.

% Punto c

punto_2c(J):-(ganador_en(cesped,J),write('Puede ganar en cesped'),nl);

(ganador_en(arcilla,J),write('Puede ganar en arcilla'),nl);

(ganador_en(cemento,J),write('Puede ganar en cemento'),nl);

(ganador_en(sintetica,J),write('Puede ganar en sinttico'),nl).

% Punto d

punto_2d(_,[],_):-!.

Gua de prcticos Prolog Pgina 17


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
punto_2d(J,[H|T],S):-(ganador_en(H,J),concat('Puede ganar en ',H,S));punto_2d(J,T,S).

% Punto e

punto_2e(C,[H|T]):-ganador_en(C,H),write(H),write(' puede ganar'),nl;punto_2e(C,T).

% Punto f

punto_2f(_,[],X):-X is 0,!.

punto_2f(J,[H|T],X):-(ganador_en(H,J),punto_2f(J,T,X1),X is X1+1);

(not(ganador_en(H,J)),punto_2f(J,T,X1),X is X1).

Ejercicio 9
La Liga de la Justicia VS Los Vengadores

Jeff Albertson es un reconocido vendedor de comics que nos ha pedido determinar quin
podra ser el ganador en una pelea entre los miembros de La Liga de la Justicia y Los
Vengadores. Para ello, nos ha dado la siguiente lista de los miembros de cada equipo y sus
capacidades y aptitudes:

Personaj Habilidade Inteligenci Humano LJ Vengadores


e s a ?
Exp Motiv Trabaj Temperament
. . (1-5) o en o
equipo
(1-
5)

Superman 1-2-3-4 8 No 5 5

Batman 5-6-7-8-9- 10 Si 5 3
14

La Mujer 2-8-5 9 No 3 4
Maravilla

Flash 3-4-9 7 Si 3 4

Gua de prcticos Prolog Pgina 18


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Linterna 10-1-11 8 Si 1 3
Verde

Aquaman 12-13-2-8 8 No 2 1

Flecha 7-2-5-14-17 9 Si 1 3
Verde

Capitan 2-15-16-7- 7 Si Bueno Bueno


Amrica 14

Hawkeye 17-7-4 8 Si Malo Bueno

Iron Man 2-4-1-7-8-9- 10 Si Malo Malo


6-15

Thor 1-2-7-8-15- 6 No Bueno Malo


16

Hulk 2-15-16 7 Si Malo Bueno

Black 5-7-14 10 Si Bueno Bueno


Widow

Cdigo Habilidad

1 Volar

2 Fuerza

3 Velocidad

4 Visin

5 Obtener informacin

6 Tecnologa

7 Pelea mano a mano

8 Proteccin a golpes

9 Qumica

Gua de prcticos Prolog Pgina 19


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
10 Semi-invulnerable

11 Disparar rayos

12 Telepata

13 Respirar bajo el agua

14 Uso de armas

15 Resistencia

16 Auto sanacin

17 Experto en arquera

Tambin sabemos que hay habilidades que son superiores a otras:

Cdigo Habilidad Superior a

1 Volar Todas

2 Fuerza 4-7-8-13

3 Velocidad 2-7-8-14

4 Visin 12-17

5 Obtener informacin 6-2-7-16-11

6 Tecnologa 7-8-12

7 Pelea mano a mano 8-14-15

8 Proteccin a golpes 9-16-14

9 Qumica 4-7

10 Semi-invulnerable 2

11 Disparar rayos 2-3-5

Gua de prcticos Prolog Pgina 20


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
12 Telepata 3-11

13 Respirar bajo el agua 2-15

14 Uso de armas 2-7-8-10

15 Resistencia 16-10-7

16 Auto sanacin 7-14-17

17 Experto en arquera 8

Ahora responda las siguientes preguntas:

a) Cree una regla para mostrar todas las habilidades de un determinado superhroe.
b) Muestre todos los superhroes que posean un determinado poder y una inteligencia
mayor a 6.
c) Muestre todos los superhroes que posean un determinado poder pero no otro, por
ejemplo, que posean fuerza, pero no posean Telepata.
d) Realice el punto b y c pero slo para superhroes de La Liga de la Justicia.
e) Cree una regla que permita saber dada una habilidad, a qu otras habilidades
supera.
f) Dada una habilidad, mostrar por qu otras habilidades es superada.

Resolucin

% LIstado de superheroes

superheroe(superman, [1, 2, 3, 4], 8, no , liga(5, 5)).

superheroe(batman, [5, 6, 7, 8, 9, 14], 10, si, liga(5, 3)).

superheroe(la_mujer_maravilla, [2, 8, 5], 9, no, liga(3, 4)).

superheroe(flash, [3, 4, 9], 7, si, liga(3, 4)).

superheroe(linterna_verde, [10, 1, 11], 8, si, liga(1, 3)).

superheroe(aquaman, [12, 13, 2, 8], 8, no, liga(2, 1)).

superheroe(flecha_verde, [7, 2, 5, 14, 17], 9, si, liga(1, 3)).

superheroe(capitan_america, [2, 15, 16, 7, 14], 7, si, vengadores(bueno, bueno)).

Gua de prcticos Prolog Pgina 21


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
superheroe(hawkeye, [17, 7, 4], 8, si, vengadores(malo, bueno)).

superheroe(iron_man, [2, 4, 1, 7, 8, 9, 6, 15], 10, si, vengadores(malo, malo)).

superheroe(thor, [1, 2, 7, 8, 15, 16, 11], 6, no, vengadores(bueno, malo)).

superheroe(hulk, [2, 15, 16], 7, si, vengadores(malo, bueno)).

superheroe(black_widow, [5, 7, 14], 10, si , vengadores(bueno, bueno)).

% Listado de habilidades

habilidad(1, volar).

habilidad(2, fuerza).

habilidad(3, velocidad).

habilidad(4, vision).

habilidad(5, obtener_informacion).

habilidad(6, tecnologia).

habilidad(7, pelea).

habilidad(8, proteccion_a_golpes).

habilidad(9, quimica).

habilidad(10, semi_invulnerable).

habilidad(11, disparar_rayos).

habilidad(12, telepatia).

habilidad(13, respirar_bajo_el_agua).

habilidad(14, armas).

habilidad(15, resistencia).

habilidad(16, auto_sanacion).

habilidad(17, arqueria).

% Comparacin de habilidades

Gua de prcticos Prolog Pgina 22


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
supera_a(1, [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]).

supera_a(2, [4, 7, 8, 13]).

supera_a(3, [2, 7, 8, 14]).

supera_a(4, [12, 17]).

supera_a(5, [6, 2, 7, 16, 11]).

supera_a(6, [7, 8, 12]).

supera_a(7, [8, 14, 15]).

supera_a(8, [9, 16, 14]).

supera_a(9, [4, 7]).

supera_a(10, [2]).

supera_a(11, [2, 3, 5]).

supera_a(12, [3, 11]).

supera_a(13, [2, 15]).

supera_a(14, [2, 7, 8, 10]).

supera_a(15, [16, 10, 7]).

supera_a(16, [7, 14, 17]).

supera_a(17, [8]).

%punto a

ver_habilidad([],S):- S = ''.

ver_habilidad([H|T],Hab):-habilidad(H,Nombre),

ver_habilidad(T, NombreT),

concat(Nombre, ' - ',NH),

concat(NH, NombreT, Hab).

ver_habilidades(Heroe, Hab):-superheroe(Heroe,Lista,_,_,_), ver_habilidad(Lista, Hab).

Gua de prcticos Prolog Pgina 23


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
%punto b

punto_b(Poder, Int, H):-superheroe(H,L,I,_,_), habilidad(Id, Poder), tiene_hab(Id, L), I>Int.

tiene_hab(Id, [H|T]):-Id=:=H,!;tiene_hab(Id,T),!.

tiene_hab(_,[]):-false.

%punto c

punto_c(Poder1, Poder2, H):- punto_b(Poder1, 0, H), not(punto_b(Poder2, 0, H)).

%punto c sin usar llamada a otros predicados

punto_c2(Poder1,Poder2,H):-

superheroe(H,L,_,_,_),

habilidad(Id, Poder1),

habilidad(Id2, Poder2),

tiene_hab(Id, L),

not(tiene_hab(Id2,L)).

%punto d

punto_db(Poder, Int, H):-superheroe(H,L,I,_,liga(_,_)), habilidad(Id, Poder), member(Id, L),


I>Int.

punto_dc(Poder1, Poder2, H):- punto_db(Poder1, 0, H), not(punto_db(Poder2, 0, H)).

%punto e

punto_e(Hab,S):-habilidad(Cod,Hab),supera_a(Cod,L),ver_habilidad(L,S).

%punto f

Gua de prcticos Prolog Pgina 24


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
es_superado(Cod,H,Hab):-
supera_a(H,Lista),member(Cod,Lista),habilidad(H,Nombre),concat(Nombre,'',Hab),!.

punto_f(_,[],'').

punto_f(Cod,[H|T],Hab):-punto_f(Cod,T,X),(es_superado(Cod,H,X1),concat(X1,'-
',X2),concat(X2,X,Hab),!;concat(X,'',Hab),!).

Ejercicio 10

Empresa de Servicios

Una empresa de servicios varios ofrece la posibilidad de realizar compras varias desde un sitio
enInternet. Los usuarios solo deben registrarse e ir eligiendo cada artculo, como tambin
sucantidad.
Este sistema corre un proceso al finalizar el da que genera la siguiente base de conocimientos:

precioUnitario(producto(tomate), 12.50).
precioUnitario(producto(leche, sancor), 2.45).
precioUnitario(producto(papa), 4.50).
precioUnitario(producto(yogur, laSerenisima), 1.75).
precioUnitario(producto(yogur, sancor), 1.65).
precioUnitario(producto(yogur, manfrey), 1.15).
precioUnitario(producto(fsforos, los3Patitos), 1).

El producto se representa como un functor con:


El nombre de un producto genrico, o bien
El nombre de un producto y la marca que lo comercializa

compro(leo, producto(tomate), 2).


compro(leo, producto(yogur, manfrey), 10).
compro(leo, producto(papa), 1).
compro(nico, producto(tomate), 3).

Gua de prcticos Prolog Pgina 25


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
compro(flor, producto(yogur, laSerenisima), 2).
compro(flor, producto(leche, sancor), 4).
marcaImportante(sancor).
marcaImportante(laSerenisima).

Se pide:

1) Realice las consultas (directamente en el shell) que permitan determinar


quines compraron productos de Sancor (debe devolver los individuos leo y flor)
qu compr Leo
si Leo compr 2 cosas de algn producto (debe decirme que s).
2)Resuelva el predicado cuantoGasto/2 que relaciona una persona con el total que gast.
? cuantoGasto(flor, Total)
Total = 13.5 (3.5 de los dos yogures y 10 de las cuatro leches).

Ayuda: disponemos de una clusula definida llamada findall/3, que colecciona todas las
soluciones de un objetivo y retorna una lista como resultado con los valores del objetivo
definidos por una variable.

findall (Variable, predicado objetivo, Lista).

Donde:
Variable: especifica qu argumento del predicado va ser coleccionado en la lista.
predicado objetivo: es el objetivo del cual los valores sern coleccionados en la Lista
Lista: lista resultado con los valores obtenidos por Variable en cada objetivo evaluado.

Adicionalmente existe una segunda clusula predefinida que permite sumar los elementos de
una lista llamado sumlist/2:
sumlist (Lista, Suma).

3)Codifique el predicado esMarquero/1, que relaciona las personas que slo compran cosas
de marcas importantes. Deber retornar todas las personas sin repetir.

Gua de prcticos Prolog Pgina 26


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Ayuda: podra devolver una lista ordenada. (sort/2).

Resolucin

%Hechos

precioUnitario(producto(tomate), 12.50).

precioUnitario(producto(leche, sancor), 2.45).

precioUnitario(producto(papa), 4.50).

precioUnitario(producto(yogur, laSerenisima), 1.75).

precioUnitario(producto(yogur, sancor), 1.65).

precioUnitario(producto(yogur, manfrey), 1.15).

precioUnitario(producto(fsforos, los3Patitos), 1).

compro(leo, producto(tomate), 2).

compro(leo, producto(yogur, manfrey), 10).

compro(leo, producto(papa), 1).

compro(nico, producto(tomate), 3).

compro(flor, producto(yogur, laSerenisima), 2).

compro(flor, producto(leche, sancor), 4).

marcaImportante(sancor).

marcaImportante(laSerenisima).

%Punto 2

montoCompra(Persona, Total):-

compro(Persona, Producto, Cantidad),

precioUnitario(Producto, Precio),

Gua de prcticos Prolog Pgina 27


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
Total is Precio * Cantidad.

cuantoGasto(Persona, Monto):- findall(Total, montoCompra(Persona, Total), Totales),


sumlist(Totales, Monto).

%Punto 3

esMarquero(MarquerosSinRepetir):- findall(Persona,(compro(Persona, producto(_, Marca), _),


marcaImportante(Marca)),Marqueros), sort(Marqueros, MarquerosSinRepetir).

Ejercicio 11

Usuarios

Tenemos tres tipos de usuario, representados con functores:


Registrndose se puede obtener un usuario por un mes trial, que se representa por su
idde usuario y su fecha de registracin: trial(id, fechaRegistracion)).
Para tener un usuario con menos limitaciones existe la posibilidad de pagar por un
usuariopremium. Los usuarios premium tienen una cuota mensual (en MB) de
downloads, quedepender de cunto paguen.Se representan por su id de usuario y la
cuota mensual correspondiente: premium(id,cuota).
El predicadio usuario/2 indica los usuarios existentes y les asigna un identificador
nico,por ejemplo:
usuario(2, trial(guille, fecha(10, 10, 2009)).
usuario(3, trial(luis, fecha(29, 9, 2009)).
usuario(4, trial(carlos, fecha(10, 9, 2009)).
usuario(5, premium(martin, 1000)).
Se pide:

1) El predicado estaVigente/1 determina si una cuenta de usuario trial se cre hace un


mes.Por ejemplo:
?- estaVigente(guille).
Yes
?- estaVigente(luis).
Yes

Gua de prcticos Prolog Pgina 28


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
?- estaVigente(carlos).
No

Para eso contamos con el predicado hoy/1 permite conocer la fecha de hoy.
hoy(fecha(15,10,2009)).

2)El predicado estaDisponible/1 indica si un nombre de usuario est disponible, es decir,


nofue tomado an, por ningn usuario premium ni trial. Por ejemplo:
?- estaDisponible(guille).
No. \% Hay un usuario trial con ese nombre
?- estaDisponible(martin).
No. \% Hay un usuario premium con ese nombre
?- estaDisponible(nico).
Yes.

Resolucin

%Echos parte 1

usuario(2, trial(guille, fecha(10, 10, 2009))).

usuario(3, trial(luis, fecha(29, 9, 2009))).

usuario(4, trial(carlos, fecha(21, 9, 2012))).

usuario(5, premium(martin, 1000)).

%Parte 2

%Punto 1

hoy(fecha(15,10,2012)).

estaVigente(Cuenta):- usuario(_,trial(Cuenta, fecha(D,M,A))), hoy(fecha(D1,M1,A1)),

A=:=A1, (M=:=M1; (DM is M1-M, DM =:=1, D > D1)).

%Punto 2

existeUsuario(Nombre):-usuario(_,trial(Nombre,_)), estaVigente(Nombre).

Gua de prcticos Prolog Pgina 29


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
existeUsuario(Nombre):-usuario(_,premium(Nombre,_)).

estaDisponible(Nombre):- not(existeUsuario(Nombre)).

Ejercicios 12

Desarrollar un programa en Prolog que permita manejar listas con los siguientes predicados:

cuenta(Lista, Elementos). Permite contar los elementos de un lista


suma(Lista, Suma). Permite sumar los elementos de una lista siempre que stos
sean numricos. En caso de contener al menos un elemento no numrico retorna
false.
ultimo (X, Lista). Permite obtener el ltimo elemento de una lista.
concatena(L1, L2, L3). Permite concatenar dos listas dando lugar a una tercera
inversa(L1, L2). Permite generar una lista L2 como inversa de L1.
Nota: para generar la segunda lista puede utilizar el predicado concatena/3 del
punto anterior.

Resolucin

miembro(X,[X|_]).

miembro(X,[_|Y]) :- miembro(X,Y).

cuenta([],0).

cuenta([_|Y],N) :- cuenta(Y,M),

N is M+1.

concatena([],L,L).

concatena([X|L1],L2,[X|L3]) :- concatena(L1,L2,L3).

ultimo(X,[X]).

ultimo(X,[_|Y]) :- ultimo(X,Y).

Gua de prcticos Prolog Pgina 30


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
inversa([],[]).

inversa([X|Y],L) :- inversa(Y,Z),

concatena(Z,[X],L).

suma([],0).

suma([X|Y],S):- suma(Y, Y1), S is Y1+X.

Ejercicio 13
El rea de recursos humanos de un importante Club necesita obtener cierta informacin
especfica respecto a los aspirantes que se presentaron a un puesto de Guardavidas de la
pileta.
Durante las entrevistas de los aspirantes se tuvieron en cuenta los gustos de cada uno y si
sabe nadar o no.
La base de conocimiento est expresada en las siguientes tablas

Gua de prcticos Prolog Pgina 31


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013

A continuacin se mencionan los nombres de los deportes que se pueden practicar en el club.
Lista de deportes: atletismo, bsquet, ciclismo, natacin, equitacin, ftbol, hndbol, remo,tenis
y vley.

Se requiere conocer la siguiente informacin sobre los aspirantes:

1) Para cada aspirante, todos los deportes que se practiquen en el club y que le guste (sin
incluir otras actividades que no sean deportes).

Gua de prcticos Prolog Pgina 32


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
2) Para cada aspirante, todas las dems actividades que les gustan (sin incluir los deportes que
se practican en el club).
3) Consultar si algn aspirante en particular, no le gusta ninguno de los deportes que se
practican en el club.
4) Cuntos deportes se pueden practicar en el club?
5) Listado de los deportes que se pueden practicar en el club, ordenados ascendentemente
(desde la A hasta la Z).
6) Consultar si algn aspirante en particular rene los requisitos para ser un candidato al
puesto. Para que un aspirante pueda ser candidato al puesto, debe cumplir mnimamente los
siguientes requisitos: que sepa nadar, que le guste algn deporte de los que se practiquen en
el club y que est relacionado con alguna actividad acutica (si bien no todas esas actividades
acuticas sean realizadas en el club).

El listado de las actividades acuticas es: natacin, remo, danza acutica y buceo.

%aspirante/1.
aspirante('Sofa').
aspirante('Mara').
aspirante('Juan').
aspirante('Nico').
%leGusta/2.
leGusta('Sofa','programar en Java').
leGusta('Mara','pintar').
leGusta('Mara','natacin').
leGusta('Mara','tenis').
leGusta('Juan','cantar').
leGusta('Juan','ftbol').
leGusta('Juan','escuchar msica').
leGusta('Nico','remo').
leGusta('Nico','ftbol').
%sabeNadar/1.
sabeNadar('Mara').
sabeNadar('Nico').
%personasXDeporte/2. Punto 1)
personasXDeporte(X,D):- aspirante(X), leGusta(X,D),
member(D,['atletismo','bsquet','ciclismo','natacin','equitacin','ftbol','hndbol','remo'
,'tenis','vley']).
%personasXOtrasActividades/2. Punto 2)
personasXOtrasActividades(X,D):- aspirante(X), leGusta(X,D),
\+(member(D,['atletismo','bsquet','ciclismo','natacin','equitacin','ftbol','hndbol','re
mo','tenis','vley'])).
%aXLeGustaAlgnDeporte/1. Auxiliar para Punto 3)
aXLeGustaAlgnDeporte(X):-
aspirante(X),leGusta(X,D),member(D,['atletismo','bsquet','ciclismo','natacin','equitacin'
,'ftbol','hndbol','remo','tenis','vley']),!.
%aXNoLeGustaNingnDeporte/1. Punto 3)
aXNoLeGustaNingnDeporte(X):- not(aXLeGustaAlgnDeporte(X)).

Gua de prcticos Prolog Pgina 33


Universidad Tecnolgica Nacional
FRC-Dpto. de Ing. en Sistemas de Informacin Paradigmas de Programacin 2013
%cuntosDeportesSePracticanEnElClub/1 Punto 4)

cuntosDeportesSePracticanEnElClub(N):-
length(['atletismo','bsquet','ciclismo','natacin','equitacin','ftbol','hndbol','remo','
tenis','vley'],N).
%listadoDeDeportesOrdenados/1 Punto 5)
listadoDeDeportesOrdenados(L):-
sort(['atletismo','bsquet','ciclismo','natacin','equitacin','ftbol','hndbol','remo','te
nis','vley'],L).
%candidato/1. Punto 6)
candidato(X):- aspirante(X), (sabeNadar(X),!; leGusta(X,D),
member(D,['atletismo','bsquet','ciclismo','natacin','equitacin','ftbol','hndbol','remo'
,'tenis','vley']), member(D,['natacin','remo','danza acutica','buceo']),!).

Gua de prcticos Prolog Pgina 34

También podría gustarte