Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ir(X,Y):- connected(X,Y).
ir(X,Y):- connected(X,Z), ir(Z,Y).
2
1
3
4
6
5
7 1
1
1
1
1
1
connected(1,2).
connected(3,4).
connected(5,6).
connected(7,8).
connected(9,10).
connected(12,13).
connected(13,14).
connected(15,16).
connected(17,18).
connected(19,20).
connected(4,1).
connected(6,3).
connected(4,7).
connected(6,11).
connected(14,9).
connected(11,15).
connected(16,12).
connected(14,17).
connected(16,19).
Ejercicio: Matryoshka
Al preguntar:
dentro(natasha,katarina)
la respuesta será true,
y al preguntar:
dentro(katarina,olga)
será falso.
Ejercicio: Evolución Pokemon
huevo
Ivysaur
Bulbasaur
Matt Leblanc
Dr Drake Ramoray
Joey Tribbiani
Ejercicio: Friends
dentroDe(pollito, sinNombre).
dentroDe(sinRostro, pollito).
dentroDe(bo, sinRostro).
dentroDe(susuwatae, bo).
Ejercicio: Viajes
enCarro(newYork,hamilton).
Escribir un predicado, que determine si es posible
enCarro(hamilton,francia).
viajar de un lugar a otro encadenando los viajes
enCarro(valmont,roma).
en coche, tren y avión.
enCarro(valmont,metz).
Por ejemplo, su programa debe responder
enTren(metz,frankfurt).
afirmativamente a la consulta:
enTren(roma,frankfurt).
?viajes(valmont, francia)
enTren(metz,paris).
true
enTren(roma,paris).
Escriba un predicado que le diga la ruta a seguir
enAvion(frankfurt,bangkok).
cuando viaje de un lugar a otro.
enAvion(frankfurt,singapore).
? travel(valmont,losAngeles,X) .
enAvion(paris,losAngeles).
X = go(valmont,metz,
enAvion(bangkok,newYork).
go(metz,paris,
enAvion(singapore,newYork).
go(paris,losAngeles)))
enAvion(losAngeles,newYork).
Extienda el predicado anterior, para que no solo
diga la ruta, sino para que nos indique si el
trayecto será en tren, carro o avión.
byCar(auckland, hamilton).
byCar(hamilton, raglan).
byCar(valmont, saarbruecken).
byCar(valmont, metz). connected(X, Y) :-
byCar(X, Y);
byTrain(metz, frankfurt). byTrain(X, Y);
byTrain(saarbruecken, frankfurt). byPlane(X, Y).
byTrain(metz, paris).
byTrain(saarbruecken, paris). travel(X, Y) :- connected(X, Y).
travel(X, Z) :-
byPlane(frankfurt, bangkok). connected(Y, Z),
byPlane(frankfurt, singapore). travel(X, Y).
byPlane(paris, losAngeles).
byPlane(bangkok, auckland). tpte(X,Y,byCar) :- byCar(X,Y).
byPlane(singapore, auckland). tpte(X,Y,byTrain) :- byTrain(X,Y).
byPlane(losAngeles, auckland). tpte(X,Y,byPlane) :- byPlane(X,Y).
tpte2(X,Y,Z) :-
byCar(X,Y), Z= byCar;
byTrain(X,Y), Z= byTrain;
byPlane(X,Y), Z= byPlane.
Obtener el factorial de un número N
• La sucesión de fibonacci es 0,1,1,2,3,5,8,…
escribir una función fibonacci(X, Y), tal que Y
es n-esimo elemento de la sucesión.
Sumatoria de los números menores a N:
suma(N,Resultado) :-
N=<1 , Resultado is 1.
suma(N,Resultado) :-
N>1 ,
suma(N-1,ResultAux),
Resultado is ResultAux+N.
Tarea:
• Multiplicar con sumas