Listas en prolog

Solo disponible en BuenasTareas
  • Páginas : 2 (455 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de noviembre de 2010
Leer documento completo
Vista previa del texto
Listas en Prolog
Operaciones sobre Listas

Listas en Prolog
Una lista es una secuencia de un número indeterminado de elementos.
animales =[perro, gato, raton, pajaro]

Es un árbol, como tododato estructurado de Prolog :
animales

perro

gato

raton

pajaro

Representación de Listas
Si la lista está vacía es, sencillamente, un átomo / predicado: [ ]
animales =[]

Si noestá vacía, consta de dos componentes: |
animales =[cabeza | cola]

El primer elemento: denominado cabeza de la lista El resto de la lista: denominado cola
animales =[perro, gato, raton, pajaro]cabeza=perro cola =[gato, raton, pajaro]

Los elementos de la lista pueden ser de cualquier tipo (incluso otras listas)

Operaciones sobre Listas
Pertenencia
Un elemento está o no en la lista.

Unelemento X es miembro de una lista L:
– Si X es la cabeza de la lista O,
member (X, [X | cola]).

– Si X es miembro de la cola de la lista. . member (X, [L | O]): - member (X, Cola)

Ejemplo:. member(b, [a,b,c]).
x= b. L=(b, [a,b,c]). cabeza= a cola= [ b, c]
member (X, [X | cola]). member (X, [cabeza | cola]): - member (X, cola)

Concatenación Unión de dos listas en el orden enque aparecen.
conc([a, b],[c, d], [a, b, c, d])

Dos posibles casos: – Si el primer argumento es la lista vacía, entonces los argumentos segundo y tercero tienen que ser la misma lista
conc ([], L,L).

– Si el primer argumento es una lista no vacía, podremos concatenar las dos listas con su respectiva cabeza y cola.
conc (L1, L2,L3).

Ejemplo:

. Se puede usar para concatenar dos listasdadas
?conc ([a,b,c], [1,2,3], L). L = [a, b, c, 1, 2, 3]

Inserción Añadir un elemento a una lista – Si deseamos poner el elemento X al comienzo de la lista L:
[X | L ]

– Es decir, no senecesita definir ningún procedimiento para ello. En cualquier caso, éste podría definirse como el hecho:
añadir(X, L, [X|L]).

Ejemplo:
Añadir un elemento e al principio de la lista L
?L = [a,...
tracking img