INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

Artificial Inteligence

Tarea No. 2

Prolog
Profesor: Hernández Cruz Macario

Manzano León Jansel

3CM4

Fecha de entrega: 15-Octubre-2012

Introducción .

basadas en las relaciones “progenitor” y el género de las personas (si es hombre o mujer).Y):tio(X. represente en lenguaje Prolog las características de los objetos y las relaciones entre ellos.Y):tia(X. Introducción a Prolog – Hechos y Reglas Ejercicio 1.Y):abuela(X.1 Considerando la lámina anexa (tomada de la serie de televisión “Los Simpsons”).Y):hermano(X.Desarrollo I. Asimismo.Y):hermana(X.Y):- . establecer las reglas para: abuelo(X.

progenitor(jacqueline. progenitor(mona.macho(X).Y).Y):-progenitor(M. progenitor(marge.Solución (1.M).Y):-progenitor(M.Y):-progenitor(M.progenitor(M.progenitor(X. hembra(jacqueline).lisa). macho(mr_burns).macho(X). conyuge(homero. hermano(X. progenitor(clancy.X).X).bart). abuela(X. progenitor(abraham. macho(milhouse).Y).progenitor(X.homero). abuelo(X. progenitor(jacqueline.maggie). animal(snowball). progenitor(clancy.hembra(X).X).lisa).Y). progenitor(homero.marge).progenitor(M.homero).Y). tio(X.Y):-progenitor(M. macho(kang).paty).selma). . hermana(X. progenitor(marge. hembra(paty). hembra(marge). macho(bart).bart).X).Y).1) macho(homero).Y).hermana(M. hembra(mona).M).Y):-progenitor(M. macho(clancy). hembra(edna). tia(X. progenitor(homero. hembra(selma). progenitor(jacqueline. alien(kang).marge).selma). hembra(lisa).paty).hermano(M.marge). hembra(maggie).Y):-progenitor(M. progenitor(marge. progenitor(kang.maggie). progenitor(clancy.hembra(X). macho(abraham). macho(seymour_skinner).

II.2. F = 0 ?..fibonacci(2.1 Considere la definición de la sucesión de Fibonacci.8. Desarrolle un conjunto de reglas para calcular el término n-esimo de la sucesión.F).21….1.fibonacci(1. fib(n) = n si n < = 1 fib(n) = fib(n-1) + fib(n-2) si n > 1 De tal forma que los primeros términos de la sucesión son: 0.3.1. F = 1 ?.13. .F).5. ?..fibonacci(0. Aritmética y recursividad en Prolog Ejercicio 2.F).

d]). F = 3 Solución (2. fibonacci(N1.B). III.F).1). F = 2 ?. c. a b c d true . F is A+B. b.1) fibonacci(0.imprime([a. fibonacci(1.fibonacci(3. fibonacci(N2. fibonacci(N.N2 is N1-1.A).1 Listas Escriba la(s) regla(s) necesaria(s) para imprimir una lista de la siguiente forma.F = 1 ?. ?.fibonacci(4.F):- N1 is N-1.0). Ejercicio 3.F).

tierra.Solución (3.2) agregar(E.[X|Z]):-agregar(E.[zorro. ?.1) imprime([]).L.Z).[E|L]). puerco].agregar(gato. zorro. Ejercicio 3. fuego] true . agregar(E. L). imprime(T). fuego. L = [gato.[X|Y].2 Escriba la(s) regla(s) necesaria(s) para agregar un elemento al principio de una lista. tierra. imprime([H|T]):write_ln(H).L). Ejercicio 3. L = [agua. viento]. viento. puerco] true Solución (3.agregar_final([agua. ?. zopilote.Y. zopilote.3 Escriba la(s) regla(s) necesaria(s) para agregar un elemento al final de una lista.

de_reversa([H1|T1].ultimo([piolin. zoyla]. agregar_final([H1|T1].X. Ejercicio 3.X. beto. ultimo(X.X. Escriba la(s) regla(s) necesaria(s) para obtener el último elemento de una lista.[_|T]):-ultimo(X. Ejercicio 3. angel] true Solución (3. sandra.L).M).[X]).[H1|T]):-agregar_final(T1.T). .4. X = porky true Solución (3.L).[X|[]]). ?. de_reversa(T1. porky]._).H1.de_reversa([angel.T).X). L = [zoyla.L):agregar_final(M.5) ultimo(X. sandra. Escriba la(s) regla(s) necesaria(s) para invertir los elementos de una lista. beto.Solución (3. silvestre. ?.3) agregar_final([].5. bugss_bunny.4) de_reversa([].

maggie. bart. maggie] . agregar(X.L. maggie] . bart] .permutacion([bart. Escriba la(s) regla(s) necesaria(s) para obtener las permutaciones de una lista.6. L = [bart. lisa. L = [maggie.Z).Ejercicio 3. permutacion([X|Y]. L = [lisa. L = [bart.Z):permutacion(Y. L = [maggie. lisa] .L).maggie].lisa. bart. . lisa] .[]). maggie. L = [lisa. lisa. ?.6) permutacion([].L). Solución (3. bart] .

ordenada([H|T]):- primero(T.Z). fuego]). ordenada([]).7) primero([H|_]. Ejercicio 3.ordenar([stan. ?. Escriba la(s) regla(s) necesaria(s) para verificar si una lista esta ordenada. ?. false Solución (3._).Z):permutacion(L. kyle. L = [cartman.7.X).ordenada([agua. tierra. Escriba la(s) regla(s) necesaria(s) para ordenar los elementos de una lista. tierra. ordenada(Z). kenny]. . viento. (H @< X). ordenada([_]). true ?.ordenada([agua. L). fuego. viento]). Solución (3. ordenada(T). kenny. stan] .Ejercicio 3. cartman. kyle.8) ordenar([].8. ordenar(L.H).

Las listas son la única estructura disponible en Prolog y el uso de estas para una programación de complejidad moderada.edu.Conclusiones Por la realización de este trabajo.ulpgc.html . También utiliza pocos comandos en comparación con otros lenguajes de programación. WINDOWS. usando la programación lógica.gedlc.co/alejandropinto/files/2012/04/Pr%C3%A1cticas-de-Prolog%E2%80%93-Departamento-de-Ciencia-de-La-Computaci%C3%B3n-eInteligencia-Artificial-%E2%80%93-Universidad-de-Alicante. Para esto hay que tener en cuenta la naturaleza recurrente tanto de las llamadas como de las listas en este lenguaje. se pueden escribir rápidamente y con pocos errores programas claramente leíbles. Además Prolog se puede trabajar en diferentes sistemas operativos. además cualquier usuario puede acceder a él si lo desea y sin problemas de entendimiento. Referencias http://www. hay que tener en cuenta la asociatividad de los operadores antes de trabajar con él.pdf http://blog. Por otra parte en este lenguaje al igual que otros.ie/~detinko/prolog_manual.edu/~jrfisher/www/prolog_tutorial/1. MAC-OS. entre otros.utp. es de fundamental importancia.nuigalway. se puede establecer que el lenguaje Prolog está orientado a la Inteligencia Artificial. tales como UNIX.csupomona.es/docencia/lp/documentacion/GB_Prolog. Gracias a su facilidad de programar y su sencilla sintaxis gramatical y numérica.pdf http://larmor.pdf http://www.

Sign up to vote on this title
UsefulNot useful