SlideShare una empresa de Scribd logo
2
Lo más leído
5
Lo más leído
Manejo de Listas en Prolog Inteligencia Artificial Esp. Leonardo Bernal Zamora
LISTAS. Una  lista en PROLOG es un conjunto de nombres de objetos, o átomos,  separados por comas y encerrados en paréntesis cuadrados.  [member1,member2,...,memberN] Los miembros de una lista deben ser nombres válidos de objetos, pero todos los miembros deben ser declaraciones de un mismo dominio. Ejemplo: ["Maria","Ana","Juan"] [33,25.51,20,10,7] [a,b,c,d,e,f,g]
La lista puede ser vista, como un objeto don dos partes: [Cabeza|Cola] La cabeza de la lista, conformada por el primer elemento. La cola, es la parte restante de la lista. En el ejemplo, la cabeza es a, mientras que la cola de la lista es [b,c,d,e,f,g,].
ELEMENTOS DE UNA LISTA El siguiente código es para saber si un elemento se encuentra dentro de una lista y/o para sacar a la cabecera de la lista. Elemento (X,R). es verdadero si X es una lista y R es elemento de esa lista. elemento([X|R],X). %A esto se le llama el caso base. elemento([X|R],Y):-elemento(R,Y). | ?- elemento(["Mouse","Video","Parlantes","web Cam"],"Mouse"). yes | ?-  elemento(["Mouse","Video","Parlantes","web Cam"],"Ram"). no
ARIDAD DE UNA LISTA Aridad es el numero de elementos de una lista. aridad([ ],0). %Caso base aridad([X|R],N):-aridad(R,Z),N is Z+1. :?-aridad([a,b,c,d,e],N). N=5. | ?- elemento([a,e,i,o,u],X). X = a ; X = e ; X = i ; X = o ; X = u ; no
ANÁLISIS DEL EJEMPLO ANTERIOR. Nivel 1.- X=a, R=[b,c,d,e], N=N aridad([ ],0).  %Aquí tenemos una lista vacía, así que continua a la siguiente línea. aridad([X|R],N):-aridad(R,Z),N is Z+1. Aquí todo coincide, pues son variables, así que pasa a la primera acción, que es volver a empezar pero sin el primer elemento de la lista y así hasta llegar a la e. Nivel 2.- X=b, R=[c,d,e], N=N Nivel 3.- X=c, R=[d,e], N=N Nivel 4.- X=d, R=[e], N=N Nivel 5.- X=e, R=[ ], N=N ARIDAD DE UNA LISTA
En este nivel vemos que la lista vacía y la variable N coincidirán con el caso base, así que se dará por terminada la acción  aridad(R,Z)  por lo que se continuara con la segunda acción del Nivel 5,  N is Z+1 Nivel 5.- N=1 Al terminar con esto, terminara con el nivel 4 y continuara con la segunda acción del nivel anterior. Nivel 4.- N=2 Nivel 3.- N=3 Nivel 2.- N=4 Nivel 1.- N=5 ARIDAD DE UNA LISTA N=5.
CONCATENAR LISTAS Concatenar no es más que unir dos elementos o listas. Lo cual se podría decir que es unir 2 listas, pues una lista puede contener solo un elemento. De esto concluimos que concatenar es unir la lista L1 y L2 en una lista L3. conc([ ],L2,L2). conc([X|R],L2,[X|Z]):-conc(R,L2,Z). | ?- conc([a,b,c,d,e],[1,2,3],R). R = [a,b,c,d,e,1,2,3] ?- conc(['Universidad', 'de', 'Boyaca'],['Inteligencia', 'Artificial'],R). R = ['Universidad',de,'Boyaca','Inteligencia','Artificial'] Nota: cambiar las  comillas sencillas por  comillas dobles
INVERSO DE UNA LISTA inverso([ ],[ ]). inverso([X],[X]). inverso([X,Y],[Y,X]). inverso([X|R],E):-inverso(R,Z),conc(Z,[X],E). | ?- inverso([a,b,c],L). L = [c,b,a] ; | ?- inverso(['Universidad', 'de', 'Boyaca','Inteligencia', 'Artificial'],R). R = ['Artificial','Inteligencia','Boyaca',de,'Universidad'] ; Si tenemos L=[a,b,c], su inverso es Li=[c,b,a].
duplicar([ ],[ ]). duplicar([C|L1],[C,C|L2]):-duplicar(L1,L2). DUPLICAR UNA LISTA Lx=[1,2,3]     Ly=[1,1,2,2,3,3] | ?- duplicar([a,b],R). R = [a,a,b,b] eliminar EL ÚLTIMO ELEMENTO DE LA LISTA L1=[a,b,c,d]    Lq=[a,b,c]
ANÁLISIS DEL EJEMPLO ANTERIOR. Nivel 1.- C=a, P1=[b,c,d], eliminar([b,c,d],X) Nivel 2.- C=b, P1=[c,d], eliminar([c,d],X) Nivel 3.- C=c, P1=[d], eliminar([d],X) De regreso: Nivel 3.- X=[a] Nivel 2.- X=[a,b] Nivel 1.- X=[a,b,c] ELIMINAR EL ÚLTIMO ELEMENTO DE LA LISTA L1=[a,b,c,d]    Lq=[a,b,c] eliminar([A],[ ]). eliminar([C|P1],[C|P2]):-eliminar(P1,P2). ?-eliminar([2,0,1,2],X). X=[2,0,1] ?-eliminar([a],X). X=[a]
BORRAR UN ELEMENTO CUALQUIERA DE UNA LISTA borrar (X,Y,Z).  es verdadero si X es un elemento de la lista Y, y Z es la lista Y sin el elemento X. borrar(X,[ ],[ ]). borrar(X,[X|R],L):- borrar(X,R,L). borrar(X,[Y|R],[Y|L]):-X\=Y,borrar(X,R,L). | ?- borrar(a,[b,d,a,c,f],L). L = [b,d,c,f] ; \= corresponde a diferente
MÁXIMO DE UNA LISTA DE NÚMEROS max_lista([X],X). max_lista([X1,X2|L],Y):- X3 is max(X1,X2), max_lista([X3|L],Y). | ?- max_lista([1,2,50,800,9,89],L). L = 800 ; Ejercicios propuestos: Sumar los elementos de una lista. Ordenar una lista Generar una lista desde N hasta M
Aplicación de Listas Fuente: http://www.cs.us.es/~jalonso/publicaciones/
Ver Fuente http://www.cs.us.es/~jalonso/publicaciones/2006-ej_prog_declarativa.pdf
 
 
 
 
Link de Interés http://fcqi.tij.uabc.mx/docentes/ardiaz/material/manual_lab_prolog.pdf Ejercicios de programación declarativa con Prolog - http://www.cs.us.es/~jalonso/  José A. Alonso Jiménez

Más contenido relacionado

PPTX
Introducción a HTML5
PDF
Manual lab prolog
PPT
Diapositivas Html
PDF
SESIÓN 01 - EXCEL AVANZADO
DOCX
Administración de datos en Excel
PPTX
Eficiencia de algoritmos - Vanessa Ramirez
PPTX
Presentación Introducción al lenguaje HTML
PDF
22 ejercicios base de datos
Introducción a HTML5
Manual lab prolog
Diapositivas Html
SESIÓN 01 - EXCEL AVANZADO
Administración de datos en Excel
Eficiencia de algoritmos - Vanessa Ramirez
Presentación Introducción al lenguaje HTML
22 ejercicios base de datos

La actualidad más candente (20)

PDF
Historia de la Programacion funcional
PDF
Algoritmos de busqueda
PPTX
Manejador de Base de Datos
PDF
Consultas básicas en sql server
PPTX
Base de datos Access
PPTX
Topologías inalámbricas
PPTX
Grafos
PDF
Practica i prolog
PDF
Problemas de diseño de base de datos
PPTX
Dictionary
PPT
Unidad 2: Sistema de nombres de dominio (DNS)
PPTX
Clase 2 - Introducción a la programación con Python I.pptx
PPTX
Estudio Complejidad de algoritmos
PPT
Diccionario de datos
PPTX
Java pilas (Stacks) y colas (Queues)
PPTX
DIFERENCIA ENTRE HTML Y XML
DOCX
Diagramas de flujo
PDF
Gestión de archivos
PPT
Reglas de transformación
PPTX
Sql DML Lenguaje de manipulación de datos
Historia de la Programacion funcional
Algoritmos de busqueda
Manejador de Base de Datos
Consultas básicas en sql server
Base de datos Access
Topologías inalámbricas
Grafos
Practica i prolog
Problemas de diseño de base de datos
Dictionary
Unidad 2: Sistema de nombres de dominio (DNS)
Clase 2 - Introducción a la programación con Python I.pptx
Estudio Complejidad de algoritmos
Diccionario de datos
Java pilas (Stacks) y colas (Queues)
DIFERENCIA ENTRE HTML Y XML
Diagramas de flujo
Gestión de archivos
Reglas de transformación
Sql DML Lenguaje de manipulación de datos
Publicidad

Destacado (20)

PDF
Prolog ejercicios resueltos
PDF
Programacion practica prolog
PPTX
Ejercicios en prolog
PDF
Practicas prolog
PPT
Programación en Prolog para Inteligencia Artificial
PDF
P R O L O G Practica01
DOCX
Listas prolog m_c
PPT
Estructuras De Control Prolog
PPT
Curso Taller de Prolog e Inteligencia Artificial
PDF
Operadores en prolog
PDF
Clase de logica posbc
PPTX
Estructura de control
DOCX
Marvin minsky
PPT
Redes Neuronales
PDF
Prolog
PDF
DOCX
Prolog cinthya
PDF
Minimanualillo swi prolog
Prolog ejercicios resueltos
Programacion practica prolog
Ejercicios en prolog
Practicas prolog
Programación en Prolog para Inteligencia Artificial
P R O L O G Practica01
Listas prolog m_c
Estructuras De Control Prolog
Curso Taller de Prolog e Inteligencia Artificial
Operadores en prolog
Clase de logica posbc
Estructura de control
Marvin minsky
Redes Neuronales
Prolog
Prolog cinthya
Minimanualillo swi prolog
Publicidad

Similar a Practicas prolog2011 listas (20)

DOCX
Listas prolog m_c
DOCX
Listas prolog m_c
PDF
PDF
MatricesYVectoresIntroduccionnUMPY......
PDF
Listas de Fundamentos de Programación 2024
PPT
Estructuras de datos
PPTX
Unidad 2.4 Programación en Python Listas (3).pptx
PPTX
Ejercicios Python parte 4
PPTX
Listas usadas en Python es relevante.pptx
PDF
jhon anton 31.184.245 (declaraciones Listas).pdf
PPT
Algoritmos computacionales y programación: 4
PPT
Arreglos
PPT
Ed002
PPTX
vectores y matrices2,2.pptx
PPTX
Estructura de datos programacion internos
PPSX
Listas en el lenguaje de programación Python
PPT
Algoritmos
PPTX
Ejercicios con Python parte 05
PPTX
que son las listas en python y su uso.pptx
Listas prolog m_c
Listas prolog m_c
MatricesYVectoresIntroduccionnUMPY......
Listas de Fundamentos de Programación 2024
Estructuras de datos
Unidad 2.4 Programación en Python Listas (3).pptx
Ejercicios Python parte 4
Listas usadas en Python es relevante.pptx
jhon anton 31.184.245 (declaraciones Listas).pdf
Algoritmos computacionales y programación: 4
Arreglos
Ed002
vectores y matrices2,2.pptx
Estructura de datos programacion internos
Listas en el lenguaje de programación Python
Algoritmos
Ejercicios con Python parte 05
que son las listas en python y su uso.pptx

Más de Leonardo Bernal Zamora: Docente, Internauta y convencido de la educación para todos (20)

PPTX

Último (20)

PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Escuelas Desarmando una mirada subjetiva a la educación
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Híper Mega Repaso Histológico Bloque 3.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
ciencias-1.pdf libro cuarto basico niños
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Escuelas Desarmando una mirada subjetiva a la educación

Practicas prolog2011 listas

  • 1. Manejo de Listas en Prolog Inteligencia Artificial Esp. Leonardo Bernal Zamora
  • 2. LISTAS. Una lista en PROLOG es un conjunto de nombres de objetos, o átomos, separados por comas y encerrados en paréntesis cuadrados. [member1,member2,...,memberN] Los miembros de una lista deben ser nombres válidos de objetos, pero todos los miembros deben ser declaraciones de un mismo dominio. Ejemplo: ["Maria","Ana","Juan"] [33,25.51,20,10,7] [a,b,c,d,e,f,g]
  • 3. La lista puede ser vista, como un objeto don dos partes: [Cabeza|Cola] La cabeza de la lista, conformada por el primer elemento. La cola, es la parte restante de la lista. En el ejemplo, la cabeza es a, mientras que la cola de la lista es [b,c,d,e,f,g,].
  • 4. ELEMENTOS DE UNA LISTA El siguiente código es para saber si un elemento se encuentra dentro de una lista y/o para sacar a la cabecera de la lista. Elemento (X,R). es verdadero si X es una lista y R es elemento de esa lista. elemento([X|R],X). %A esto se le llama el caso base. elemento([X|R],Y):-elemento(R,Y). | ?- elemento(["Mouse","Video","Parlantes","web Cam"],"Mouse"). yes | ?- elemento(["Mouse","Video","Parlantes","web Cam"],"Ram"). no
  • 5. ARIDAD DE UNA LISTA Aridad es el numero de elementos de una lista. aridad([ ],0). %Caso base aridad([X|R],N):-aridad(R,Z),N is Z+1. :?-aridad([a,b,c,d,e],N). N=5. | ?- elemento([a,e,i,o,u],X). X = a ; X = e ; X = i ; X = o ; X = u ; no
  • 6. ANÁLISIS DEL EJEMPLO ANTERIOR. Nivel 1.- X=a, R=[b,c,d,e], N=N aridad([ ],0). %Aquí tenemos una lista vacía, así que continua a la siguiente línea. aridad([X|R],N):-aridad(R,Z),N is Z+1. Aquí todo coincide, pues son variables, así que pasa a la primera acción, que es volver a empezar pero sin el primer elemento de la lista y así hasta llegar a la e. Nivel 2.- X=b, R=[c,d,e], N=N Nivel 3.- X=c, R=[d,e], N=N Nivel 4.- X=d, R=[e], N=N Nivel 5.- X=e, R=[ ], N=N ARIDAD DE UNA LISTA
  • 7. En este nivel vemos que la lista vacía y la variable N coincidirán con el caso base, así que se dará por terminada la acción aridad(R,Z) por lo que se continuara con la segunda acción del Nivel 5, N is Z+1 Nivel 5.- N=1 Al terminar con esto, terminara con el nivel 4 y continuara con la segunda acción del nivel anterior. Nivel 4.- N=2 Nivel 3.- N=3 Nivel 2.- N=4 Nivel 1.- N=5 ARIDAD DE UNA LISTA N=5.
  • 8. CONCATENAR LISTAS Concatenar no es más que unir dos elementos o listas. Lo cual se podría decir que es unir 2 listas, pues una lista puede contener solo un elemento. De esto concluimos que concatenar es unir la lista L1 y L2 en una lista L3. conc([ ],L2,L2). conc([X|R],L2,[X|Z]):-conc(R,L2,Z). | ?- conc([a,b,c,d,e],[1,2,3],R). R = [a,b,c,d,e,1,2,3] ?- conc(['Universidad', 'de', 'Boyaca'],['Inteligencia', 'Artificial'],R). R = ['Universidad',de,'Boyaca','Inteligencia','Artificial'] Nota: cambiar las comillas sencillas por comillas dobles
  • 9. INVERSO DE UNA LISTA inverso([ ],[ ]). inverso([X],[X]). inverso([X,Y],[Y,X]). inverso([X|R],E):-inverso(R,Z),conc(Z,[X],E). | ?- inverso([a,b,c],L). L = [c,b,a] ; | ?- inverso(['Universidad', 'de', 'Boyaca','Inteligencia', 'Artificial'],R). R = ['Artificial','Inteligencia','Boyaca',de,'Universidad'] ; Si tenemos L=[a,b,c], su inverso es Li=[c,b,a].
  • 10. duplicar([ ],[ ]). duplicar([C|L1],[C,C|L2]):-duplicar(L1,L2). DUPLICAR UNA LISTA Lx=[1,2,3]  Ly=[1,1,2,2,3,3] | ?- duplicar([a,b],R). R = [a,a,b,b] eliminar EL ÚLTIMO ELEMENTO DE LA LISTA L1=[a,b,c,d]  Lq=[a,b,c]
  • 11. ANÁLISIS DEL EJEMPLO ANTERIOR. Nivel 1.- C=a, P1=[b,c,d], eliminar([b,c,d],X) Nivel 2.- C=b, P1=[c,d], eliminar([c,d],X) Nivel 3.- C=c, P1=[d], eliminar([d],X) De regreso: Nivel 3.- X=[a] Nivel 2.- X=[a,b] Nivel 1.- X=[a,b,c] ELIMINAR EL ÚLTIMO ELEMENTO DE LA LISTA L1=[a,b,c,d]  Lq=[a,b,c] eliminar([A],[ ]). eliminar([C|P1],[C|P2]):-eliminar(P1,P2). ?-eliminar([2,0,1,2],X). X=[2,0,1] ?-eliminar([a],X). X=[a]
  • 12. BORRAR UN ELEMENTO CUALQUIERA DE UNA LISTA borrar (X,Y,Z). es verdadero si X es un elemento de la lista Y, y Z es la lista Y sin el elemento X. borrar(X,[ ],[ ]). borrar(X,[X|R],L):- borrar(X,R,L). borrar(X,[Y|R],[Y|L]):-X\=Y,borrar(X,R,L). | ?- borrar(a,[b,d,a,c,f],L). L = [b,d,c,f] ; \= corresponde a diferente
  • 13. MÁXIMO DE UNA LISTA DE NÚMEROS max_lista([X],X). max_lista([X1,X2|L],Y):- X3 is max(X1,X2), max_lista([X3|L],Y). | ?- max_lista([1,2,50,800,9,89],L). L = 800 ; Ejercicios propuestos: Sumar los elementos de una lista. Ordenar una lista Generar una lista desde N hasta M
  • 14. Aplicación de Listas Fuente: http://www.cs.us.es/~jalonso/publicaciones/
  • 16.  
  • 17.  
  • 18.  
  • 19.  
  • 20. Link de Interés http://fcqi.tij.uabc.mx/docentes/ardiaz/material/manual_lab_prolog.pdf Ejercicios de programación declarativa con Prolog - http://www.cs.us.es/~jalonso/ José A. Alonso Jiménez