Sunteți pe pagina 1din 3

Programaci on declarativa

Ejercicios 1. Implementar un predicado comp(Subconj, Conj, Comp) que se verique sii Comp es el complementario del subconjunto Subconj en el conjunto Conj. Ejemplo: comp([3,1], [1,3,2,6], X) debe darnos la respuesta X = [2, 6] o cualquier otra permutaci on de X. on puede suponerse que los conjuntos est an representados por NOTA: Para simplicar la implementaci listas sin elementos repetidos, y que los argumentos del predicado est an ya en ese buen formato. 2. Implementar un predicado Prolog de sintaxis sustituir(Elem,PorElem,Lista, Resultado) tal que Resultado es la lista resultante de sustituir en la lista Lista todas las apariciones de Elem por PorElem. a Resultado = Ejemplo: La respuesta a la pregunta sustituir([a,b,c,a,[a],d],Resultado) ser [b,b,c,b,[a],d] 3. Implementar un predicado Prolog de sintaxis comprimir (Lista, Comprimida) tal que Comprimida es la lista resultado de comprimir la lista Lista, al eliminar repeticiones consecutivas de un elemento dado. Ejemplo: La respuesta a la pregunta comprimir([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X) ser a X = [a,b,c,a,d,e] 4. Implementar un predicado Prolog de sintaxis duplicar n(Lista,N,Resultado) tal que Resultado es la lista obtenida a partir de la lista Lista al repetir N veces cada elemento en la lista Lista. a X = [a,a,a,b,b,b,c,c,c]. Ejemplo: La respuesta a la pregunta duplicar n([a,b,c],3,X) ser 5. Implementar un predicado Prolog de sintaxis codificar(Lista, Resultado) tal que Resultado es la lista resultante de codicar la lista Lista de tal forma que una sucesi on de elementos repetidos consecutivos en Lista se sustituye por un par de la forma [Longitud, Elemento] con Longitud la longitud de la serie de repeticiones consecutivas de Elemento. Ejemplo: La respuesta a una pregunta codificar([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X) ser a X = [[4,a],[1,b],[2,c],[2,a],[1,d][4,e]]. NOTA: Pueden suponerse implementados los predicados longitud(Lista,L) que calcula la longitud L de la lista Lista; y el predicado empacar(Lista, R) donde R es el resultado de incluir en una sublista las secuencias de elementos repetidos en la lista Lista. As , la respuesta a la pregunta empacar([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X) [[a,a,a,a],[b],[c,c],[a,a],[d],[e,e,e,e]] en puede hacerse directamente, sin los predicados mencionados. NOTA: Tambi 6. Implementar un predicado Prolog de sintaxis extraer n(Lista,Pos1,Pos2,Resultado) tal que Resultado es la lista resultante de extraer de la lista Lista la sublista formada por los elementos situados entre las posiciones Pos1 y Pos2. Ejemplo: La respuesta a la pregunta extraer n([a,b,c,d,e,f,g,h,i,k],3,7,L) es L = [c,d,e,f,g]. 7. Implementar un predicado Prolog de sintaxis combinaciones(N,Lista,Combinaci on) tal que Combinaci on es una de las posibles combinaciones de N elementos de la lista Lista. Ejemplo: La respuestas a la pregunta combinaciones(3,[a,b,c,d,e,f],R) son [a,b,c], [a,b,d], [a,b,e], ... 8. Implementar un predicado Prolog de sintaxis empacar(Lista,Resultado) tal que Resultado es la lista resultante de incluir en una misma sublista a elementos repetidos consecutivos de la lista Lista. Ejemplo: La respuesta a la pregunta empacar([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X) ser a X = [[a,a,a,a],[b],[c,c],[a,a],[d],[e,e,e,e]] 9. Implementar un predicado Prolog de sintaxis duplicar(Lista, Resultado) tal que Resultado es la lista resultante de duplicar en la lista Lista cada uno de sus elementos. Ejemplo: La respuesta a la pregunta duplicar([a,b,c,c,d],X). es X = [a,a,b,b,c,c,c,c,d,d]. ser a X =

10. Implementar un predicado Prolog de sintaxis duplicar n(Lista,N,Resultado) tal que Resultado es la lista obtenida a partir de la lista Lista al repetir N veces cada elemento en la lista Lista. a X = [a,a,a,b,b,b,c,c,c]. Ejemplo: La respuesta a la pregunta duplicar n([a,b,c],3,X) ser 11. Implementar un predicado Prolog de sintaxis eliminar(Lista,Posici on,Resultado) tal que Resultado es la lista obtenida a partir de la original Lista, una vez eliminado el elemento en la posici on Posici on. Ejemplo: La respuesta [a,b,d,e,g,h,k]. a la pregunta eliminar([a,b,c,d,e,f,g,h,i,k],3,X). es X =

12. Implementar un predicado Prolog de sintaxis separar(Lista,Longitud,Sublista1,Sublista2) tal que Sublista1 y Sublista2 son las sublistas resultantes de dividir la lista Lista en dos partes consecutivas, de manera que la primera posee longitud Longitud. a L1 = [a,b,c], Ejemplo: La respuesta a la pregunta separar([a,b,c,d,e,f,g,h,i,k],3,L1,L2) ser L2 = [d,e,f,g,h,i,k]. 13. Implementar un predicado Prolog de sintaxis rotar(Lista,N,Resultado) tal que Resultado es la lista resultante de rotar N posiciones hacia la izquierda los elementos de la lista Lista. a X = [d,e,f,g,h,a,b,c]. Ejemplo: La respuesta a la pregunta rotar([a,b,c,d,e,f,g,h],3,X) ser NOTA: Pueden suponerse implementados los predicados longitud(Lista,Longitud,Sublista1,Sublista2) tal que Sublista1 y Sublista2 son las sublistas resultantes de dividir la lista Lista en dos partes consecutivas, de manera que la primera posee longitud Longitud.As , la respuesta a la pregunta separar([a,b,c,d,e,f,g,h,i,k],3,L1,L2) ser a L1 = [a,b,c], L2 = [d,e,f,g,h,i,k]. 14. Implementar un predicado Prolog de sintaxis eliminar(Posicin,Lista,Elemento,Resultado) tal que la lista Resultado es el resultado de eliminar el elemento Elemento en la posici on Posici on de la lista Lista. Se supone que el primer elemento se encuentra en la posici on 1. Ejemplo: La respuesta a la pregunta eliminar(2,[a,b,c,d],X,R) es X=b y R=[a,c,d]. 15. Implementar un predicado Prolog de sintaxis insertar(Elemento,Posici on,Lista,Resultado) tal que Resultado es la lista resultante de insertar en la posici on Posici on de la lista Lista el elemento Elemento. Se supone que el primer elemento se encuentra en la posici on 1. Ejemplo: La respuesta a la pregunta insertar(pepe,2,[a,b,c,d],R) es R = [a,pepe,b,c,d]. 16. Implementar un predicado Prolog de sintaxis rango(Primero,Ultimo,Resultado) tal que Resultado es la lista formada por los enteros en el rango del intervalo [Primero,Ultimo]. Ejemplo: La respuesta a la pregunta rango(4,9,R) es R=[4,5,6,7,8,9]. 17. Implementar un predicado Prolog de sintaxis extraer random(Lista,Nmero,Resultado) tal que Resultado es la lista resultante de eliminar en la lista Lista un n umero N umero de elementos seleccionados de manera aleatoria. Ejemplo: La respuesta a la pregunta extraer random([a,b,c,d,e,f,g,h],3,R) es R=[e,d,a]. NOTA: Pueden suponerse concocidos los siguientes predicados: El generador de nmeros aleatorios random(N), que genera un n umero entero aleatorio en el intervalo [0,N-1]. El predicado eliminar(Posicin,Lista,Elemento,Resultado) tal que la lista Resultado es el resultado de eliminar el elemento Elemento en la posici on Posici on de la lista Lista, suponiendo que el primer elemento se encuentra en la posici on 1. El predicado longitud(Lista,L) tal que L es la longitud de la lista Lista. 18. Implementar un predicado Prolog de sintaxis combinaciones(N,Lista,Combinaci on) tal que Combinaci on es una de las posibles combinaciones de N elementos de la lista Lista. Ejemplo: La respuestas a la pregunta combinaciones(3,[a,b,c,d,e,f],R) son [a,b,c], [a,b,d], [a,b,e], ...

19. Implementar un predicado Prolog de sintaxis binarios bl(N,Arbol) tal que Arbol es un arbol binario balanceado, con N nodos. Utilizar el car acter x como informaci on asociada a cada nodo del arbol as generado, siendo el funtor de cada nodo binario. arbol binario est a balanceado cuando el n umero de hijos de su rama derecha es NOTA: Decimos que un id entico al n umero de hijos de su rama izquierda salvo, quiz as, una diferencia de uno. Ejemplo: La respuestas a la pregunta binarios bl(4,Arbol) son Arbol=binatio(x, binario(x, nil, nil), binario(x, nil, binario(x, nil, nil))), Arbol=binario(x, binario(x, nil, nil), binario(x, binario(x, nil, nil), nil)), ... 20. Implementar un predicado Prolog de sintaxis binarios sim(Arbol) tal que la respuesta sea true si y s olo si Arbol es un arbol binario sim etrico, esto es, si la rama derecha del nodo ra z posee una estructura especular del de la izquierda, independientemente del contenido de sus nodos.

S-ar putea să vă placă și