Programación Declarativa Ejercicios de programación con listas

Documentos relacionados
Programación con Listas

ESTRUCTURAS DE DATOS

Práctica N o 5 - Programación Lógica

Práctica N o 4 - Programación Lógica

Estos apuntes se han sacado de la página de internet de vitutor con pequeñas modificaciones.

DEFINICIONES TIPOS DE MATRICES DETERMINANTES Y PROPIEDADES OPERACIONES MATRICIALES INVERSA DE UNA MATRIZ SISTEMAS DE ECUACIONES

Fecha Segundo Cuarto Sexto Octavo

MATRICES. Una matriz es un conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

Concepto de matriz Se denomina matriz a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

Es una tabla bidimensional de números consistente en cantidades abstractas que pueden sumarse y multiplicarse.

Tema IV Programación lógica con estructuras

Tema 6: Funciones recursivas

Matemáticas 2.º Bachillerato. Matemáticas 2.º Bachillerato. Matemáticas 2.º Bachillerato. Ejemplo:

02 de septiembre de de septiembre de 2013

Matemáticas Física Curso de Temporada Verano Ing. Pablo Marcelo Flores Jara

CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS

CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS

Programación Declarativa UNIVERSIDAD DE MÁLAGA

2º Certamen ILI-253 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 2004

MATEMÁTICAS 2º BACH TECNOL. MATRICES. Profesor: Fernando Ureña Portero MATRICES

EJERCICIOS PARA EL PRIMER PARCIAL (de exámenes pasados)

Backtracking: Esquema General

Práctica N o 5 - Programación lógica

Algebra lineal y conjuntos convexos

Matrices 1. Se denomina matriz a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

Guía 2: Listas, recursión e inducción

A = , B = 2 2. a 11 a 1n a 21 a 2n A = a m1 a mn

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)

MATRICES OPERACIONES BÁSICAS CON MATRICES

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas

TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad

1. Matrices. Operaciones con matrices

Matrices y Determinantes. Prof. Nilsa I. Toro Catedrática Recinto Universitario de Mayagüez Residencial - AFAMaC

ESTRUCTURAS DE DATOS Y ALGORITMOS

TEMA 17: PROBABILIDAD

CALENDARIO CURSO TÉCNICOS DEPORTIVOS 1ª SEMANA ( DEL 4 AL 9 DE JULIO) SESIONES LUNES 4 MARTES 5 MIÉRCOLES 6 JUEVES 7 VIERNES 8 SÁBADO 9

Tema 1: Matrices. El concepto de matriz alcanza múltiples aplicaciones tanto en la representación y manipulación de datos como en el cálculo numérico.

15 de septiembre de de septiembre de 2014

Tema 1: Matrices. Sistemas de ecuaciones. Determinantes

Intente deducir una forma general para describir todas las matrices cuadradas de orden 4 que conmutan con la matriz ( d = ~

CAPITULO 2: LENGUAJES

Sistemas de Ecuaciones Lineales y Matrices

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n!

Matrices. Concepto de matriz Se denomina matriz a todo conjunto de números o expresiones ordenados en filas y columnas.

Tema 13: Aplicaciones de programación funcional

Técnico Superior en Producción y Administración Rural - 1er Año

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

1. La ventana de Excel

ANÁLISIS COMBINATORIO

Tipos de Probabilidades

CURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES

TEST DE DETERMINANTES

Contenido. 2 Operatoria con matrices. 3 Determinantes. 4 Matrices elementales. 1 Definición y tipos de matrices

UNIDAD V TEORÍA DE CONJUNTOS. ISC. Claudia García Pérez

Matrices. José Vicente Romero Bauset. ETSIT-curso 2009/2010. José Vicente Romero Bauset Tema 1.- Matrices. 1

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

Práctica 2 - Manejo de estructuras de datos y punteros

Tema 5: Determinantes.

Estructuras Dinámicas de datos.

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Tema 2: Determinantes

A cada matriz n-cuadrada A = (ai j ) se le asigna un escalar particular denominado determinante de A, denotado por det (A), A o

Guía 2: Funciones, listas, recursión e inducción

06/05/2009. Ing. M.Sc. Javier Antonio Ballesteros Ricaurte

COMBINATORIA. Manuel Cortés Izurdiaga. Preparación Olimpiada RSME

Maribel Martínez y Ginés Ciudad-Real Fichas para mejorar la atención MATRIZ DE LETRAS

Estructuras incompletas. Listas diferencia.

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

ESTADÍSTICA DESCRIPTIVA

Manos a la obra: Recursión, división y listas

MÓDULOS DE EMPRENDIMIENTO FEBRERO. Fecha Temas Horario. La importancia de la imagen corporativa y el éxito de su empresa

Se denomina matriz a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

D L M M J V S

Estructura de datos y de la información Boletín de problemas - Tema 9

UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES. 1. Pilas (Stacks)

Ejercicios sobre recursividad

Combinatoria. En todo problema combinatorio hay varios conceptos claves que debemos distinguir:

Tema 2. Fundamentos de la Teoría de Lenguajes Formales

Matriz A = Se denomina MATRIZ a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

Grado en Ciencias Ambientales. Matemáticas. Curso 10/11.

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Matrices y Sistemas de Ecuaciones lineales

Matrices 2º curso de Bachillerato Ciencias y tecnología

Determinantes. Determinante de orden uno. a 11 = a 11 5 = 5

EXPRESIONES Y OPERADORES

Olimpiada Mexicana de Matemáticas. Guanajuato.

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

INDICACIONES PARA LA SOLUCIÓN A ALGUNOS PROBLEMAS DE LA RELACION 6. Se usarán los siguiente predicados genéricos en todos los ejemplos

Horario Máster Ingeniería Agronómica Curso Primer Semestre

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

Elabore un diagrama de flujo y la codificación de un programa para:

Programación Declarativa. Programación Lógica.

Transcripción:

Programación Declarativa Ejercicios de programación con listas Ejercicio 1 Define versiones recursivas de los siguientes predicados sobre listas: es lista(xs) Xs es una lista bien formada es lista nat(ss) Ss es una lista de naturales primero(x,xys) X es el primer elemento de XYs ultimo(x,ysx) X es el último elemento de YsX iesimo(i,asxibs) Xi es el iésimo elemento de AsXiBs miembro(x,asxbs) X es elemento de AsXBs adyacentes(x,y,asxybs) X e Y aparecen adyacentes en AsXYBs prefijo(xs,xsys) Xs es prefijo de XsYs sufijo(xs,ysxs) Xs es sufijo de YsXs sublista(ys,xsyszs) Ys es sublista de XsYsZs concatena(xs,ys,xsys) XsYs es la concatenación de Xs y Ys elimina(x,asxbs,asbs) AsBs es AsXBs con una aparición de X eliminada no esta(x,ys) X no es elemento de Ys (emplea el operador \==/2) Ejercicio 2 Define los siguientes predicados sobre listas empleando el predicado concatena/3: primero c(x,xys) ultimo c(x,ysx) miembro c(x,asxbs) adyacentes c(x,y,asxybs) prefijo c(xs,xsys) sufijo c(xs,ysxs) sublista c(ys,xsyszs) elimina c(x,asxbs,asbs) Ejercicio 3 Define los siguientes predicados sobre listas: X es el primer elemento de XYs X es el último elemento de YsX X es elemento de AsXBs X e Y aparecen adyacentes en AsXYBs Xs es prefijo de XsYs Xs es sufijo de YsXs Ys es sublista de XsYsZs AsBs es AsXBs con una aparición de X eliminada todos iguales(xs) todos los elementos de Xs son iguales entre sí todos distintos(xs) todos los elementos de Xs son distintos entre sí as bs(asbs) AsBs representa una sentencia del lenguaje a b am bm(asbs) AsBs representa una sentencia del lenguaje a + b + Ejercicio 4 Define versiones recursivas y recursivas de cola de los siguientes predicados: 1

longitud(xs,n) suma(xs,n) maximo(asmys,m) minimo(asmys,m) cuantas(x,asxbs,n) escalar(xs,ys,p) y(xs,v) o(xs,v) inversa(xsys,ysxs) purga(xs,ys) N es la longitud de Xs N es la suma de los elementos de Xs M es el máximo de AsMYs M es el mínimo de AsMYs X aparece N veces en AsXBs P es el producto escalar de Xs y Ys V es la conjunción de la lista de 1 s y 0 s Xs V es la disyunción de la lista de 1 s y 0 s Xs YsXs es la inversa de XsYs Ys es Xs eliminando los elementos repetidos Ejercicio 5 Define los siguientes predicados de borrado sobre listas: borra una(x,asxbs,asbs) borra todas(x,asxbs) borra algunas(x,asxbs) borra al menos una(x,asxbs) borra primera(x,asxbs,asbs) borra ultima(x,asxbs,asbs) borra una X de AsXBs borra todas las X de AsXBs borra algunas X de AsXBs borra al menos una X de AsXBs borra la primera X de AsXBs borra la última X de AsXBs Ejercicio 6 Define predicados que implementen los siguientes algoritmos de ordenación: burbuja(xs,ys) insercion(xs,ys) mezcla(xs,ys) quicksort(xs,ys) Ys es Xs ordenada por la burbuja Ys es Xs ordenada por la inserción directa Ys es Xs ordenada por mezcla Ys es Xs ordenada por ordenación rápida Emplea los siguientes predicados auxiliares para implementar los algoritmos: ordenada(xs) ins orden(x,asbs,asxbs) parte en dos(asbs,as,bs) mezcla ord(as,bs,cs) partir(p,xs,migs,mays) Xs está ordenada crecientemente inserta X ordenadamente en AsBs parte AsBs en As y Bs, de aprox. de la misma longitud Cs es la mezcla ordenada de las listas ordenadas As y Bs parte Xs en menores o iguales y mayores respecto a P Ejercicio 7 Define un predicado quicksort azar(xs,ys) que dada una lista Xs la ordene en Ys aplicando quicksort, seleccionando los pivotes respecto a los que se parten las sublistas al azar (emplea el predicado aritmético random/1 para generar un número al azar). Ejercicio 8 Define los siguientes predicados sobre listas: rotacion(xsys,ysxs) permutacion(xs,ys) combinacion(xs,n,ys) combinacion rep(xs,n,ys) variacion(xs,n,ys) variacion rep(xs,n,ys) YsXs es una rotación de XsYs Ys es una permutación de Xs Ys es una combinación de N elementos de Xs sin repetición Ys es una combinación de N elementos de Xs con repetición Ys es una variación de N elementos de Xs sin repetición Ys es una variación de N elementos de Xs con repetición 2

Ejercicio 9 Define un predicado premax(psxs,n,ps) que, dada una lista PsXs, se satisface cuando Ps es el prefijo no vacío más largo de PsXs tal que la suma de sus elementos no supera N. Por ejemplo:?- premax([1,2,3,4,5,6],12,ps). Ps= [1,2,3,4];?- premax([15,2,3,4,5,6],12,ps). Ejercicio 10 Define un predicado multirot(xs,mrxs) que, dadas las listas Xs y MRXs, se satisface cuando MRXs es la concatenación de varias rotaciones (al menos una) de Xs. Por ejemplo:?- multirot([a,b,c],[a,b,c,c,a,b,b,c,a,c,a,b,a,b,c]).?- multirot([a,b,c],[a,b,c,a,c]). Ejercicio 11 Define un predicado lista vars(n,vs) que devuelva en Vs una lista de N variables libres, todas distintas entre sí. Por ejemplo:?- lista_vars(5,vs). Vs= [A,B,C,D,E]; Ejercicio 12 Define un predicado es telescopio(n,xs) que se satisfaga cuando Xs sea una lista ordenada donde cada número i entre 1 y N aparece i veces. Por ejemplo:?- es_telescopio(5,[1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]). Ejercicio 13 Define un predicado gen telescopio(n,xs) que devuelva en Xs una lista ordenada donde cada número i entre 1 y N aparece i veces. Por ejemplo:?- gen_telescopio(5,xs). Xs= [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]; Ejercicio 14 Define un predicado son consecutivas(n,xs) que se satisfaga cuando Xs sea una lista donde cada número i entre 1 y N aparece i veces consecutivas. Por ejemplo:?- son_consecutivas(5,[3,3,3,1,2,2,5,5,5,5,5,4,4,4,4]). Ejercicio 15 Define un predicado gen consecutivas(n,xs) que devuelva en Xs una lista donde cada número i entre 1 y N aparece i veces consecutivas. Por ejemplo: 3

?- gen_consecutivas(5,xs). Xs= [3,3,3,1,2,2,5,5,5,5,5,4,4,4,4]; Xs= [4,4,4,4,3,3,3,1,5,5,5,5,5,2,2];... Ejercicio 16 Define un predicado aparecen i veces(n,xs) que se satisfaga cuando Xs sea una lista donde cada número i entre 1 y N aparece i veces. Por ejemplo:?- aparecen_i_veces(5,[3,1,4,5,2,3,5,5,5,4,5,4,3,4,2]). Ejercicio 17 Define un predicado gen i veces(n,xs) que devuelva en Xs una lista donde cada número i entre 1 y N aparece i veces. Por ejemplo:?- gen_i_veces(5,xs). Xs=[3,1,4,5,2,3,5,5,5,4,5,4,3,4,2]; Xs=[3,4,1,5,3,2,5,4,5,4,5,5,3,4,2];... Ejercicio 18 Define un predicado auto rep(xs,yss) que, dada una lista Xs de N elementos, genere una lista de listas Yss de N elementos iguales a la lista Xs. Por ejemplo:?- auto_rep([a,b,c],yss). Yss= [[a,b,c],[a,b,c],[a,b,c]];?- auto_rep([],yss). Yss= []; Ejercicio 19 Define un predicado pascal(n,pss) que se satisfaga cuando Pss sea una lista de listas que almacene por filas el triángulo de Pascal de orden N. Por ejemplo:?- pascal(4,ps). Ps = [[1],[1,1],[1,2,1],[1,3,4,4,3,1]]; Ejercicio 20 Un equipo de fútbol consta de una plantilla de jugadores y para cada partido han de seleccionarse 11 de estos jugadores. En el campo estos jugadores se distribuyen en 4 líneas de juego: meta(un jugador), defensa, media y delantera. Suponiendo que la plantilla venga descrita mediante una base de conocimiento con predicados portero/1, defensa/1, medio/1 y delantero/1, definir un predicado alineacion(esquema,alineacion) 4

donde Esquema es una lista que especifica el número de jugadores por cada línea de juego en el orden: meta, defensa, media y delantera, (p.e. [1,4,4,2]) y Alineacion es una lista de listas de los jugadores seleccionados para cada línea de acuerdo con el esquema. Suponiendo que la plantilla venga dada por una lista de cuatro listas, cada una con los jugadores de cada línea, definir un predicado alineacion(plantilla,esquema,alineacion) donde Plantilla es la lista correspondiente a la plantilla disponible y Esquema y Alineacion tienen el mismo significado de antes. Con ayuda de los predicados anteriores enunciar cuestiones que permitan construir alineaciones con restricciones como las siguientes: el jugador a se alinea seguro; los jugadores a y b no aparecen en la misma alineación; los jugadores a y b no aparecen en la misma línea; los jugadores a y b no aparecen en la misma línea en puestos contiguos; los jugadores a y b no aparecen en líneas contiguas. Ejercicio 21 Se desea representar las matrices en Prolog mediante listas de listas de números, de manera que la lista i-ésima de números corresponda a la fila i-ésima de la matriz. Por ejemplo, la matriz de 3x3: 1 2 3 4 5 6 7 8 9 se representará mediante la lista de listas: [ [1,2,3], [4,5,6], [7,8,9] ] Define los siguientes predicados sobre matrices: es matriz(m) lee(m,i,j,xij) escribe(m,i,j,xij,mxij) fila(m,i,mi) columna(m,j,mj) suma(a,b,c) traspuesta(m,t) simetrica(a,b) triangular(m) M es una matriz bien formada Xij es el elemento i,j de M MXij es M con el elemento i,j reemplazado por Xij Mi es la fila i-ésima de M Mi es la columna j-ésima de M C es la suma de A y B T es la traspuesta de M A y B son simétricas M es triangular 5

Ejercicio 22 Se desea representar los conjuntos en Prolog mediante listas que no contengan elementos repetidos. Por ejemplo, el conjunto: {lunes, martes, miercoles, jueves, viernes} se representará mediante la lista: [lunes, martes, miercoles, jueves, viernes] Define los siguientes predicados sobre conjuntos: es conjunto(c) pertenece(x,c) subconjunto(a,b) union(a,b,c) diferencia(a,b,c) interseccion(a,b,c) partes(a,pa) C es un conjunto bien formado X pertenece a C A es subconjunto de B C es la unión de A y B C es la diferencia de A y B C es la intersección de A y B PA es el conjunto de todos los subconjuntos de A 6