Download Práctica 7: Programación funcional en Scala
Document related concepts
Transcript
Práctica 7: Programación funcional en Scala Table of Contents Ejercicio 1 Ejercicio 2 Ejercicio 3 Ejercicio 4 Ejercicio 5 Normas de entrega Ejercicio 1 Escribe en Scala el procedimiento quitaDuplicados(List[String]): List[String] que elimine los elementos duplicados de una lista de cadenas. Ejercicio 2 Define en Scala la función merge(List[Int],List[Int]): List[Int] que tome como argumentos dos listas ordenadas sin números repetidos y devuelva una lista (también sin números repetidos) en la que se han intercalado de forma ordenada los números de ambas listas. Ejemplo: val lista1 = List(1,2,8,12,23,56) val lista2 = List(3,8,10,22,23,48) merge(lista1,lista2) --> (1 2 3 8 10 12 22 23 48 56) Ejercicio 3 Implementa en Scala el procedimiento miMap((Int => Int), List[Int]): List[Int] que reciba una función unaria y una lista, y devuelva una lista donde se haya aplicado f a cada uno de sus elementos. Ejercicio 4 Escribe en Scala el procedimiento numTests(List[(Int => Boolean)], Int): Int que toma una lista de tests y un número n y que devuelva el número de tests de la lista que pasa el número n. Por ejemplo, supongamos los tests mayorQue8(x), par(x), impar(x) val listaTests = List(mayorQue8 _, numTests (listaTests, 12) --> 2 numTests (listaTests, 3) --> 1 par _, impar _) Ejercicio 5 Implementa en Scala el procedimiento generaTest(List[String]): List[Int=>Boolean] que devuelva una lista de tests a partir de una lista de expresiones. La lista de expresiones tendrá la forma de ("op1" "n1" ! "opn" "nn"), donde los operadores pueden ser las cadenas ">", "<" o "=". Puedes definir funciones auxiliares. Por ejemplo: generaTests(List(">","3","<","5",">","8","=","10")) devolverá una lista con 4 tests: la comprobación de si un número es mayor que 3, menor que 5, mayor que 8 y igual que 10. Esta lista se podría utilizar en el ejercicio anterior: val listTest = generaTests(List(">","3","<","5",">","8","=","10")) numTests(listTest, 10) --> 3 Nota: Puedes utilizar el método de cadenas toInt para transformar una cadena a un entero. Normas de entrega Fecha de entrega: durante la semana del 18 al 20 de abril, en la sesión correspondiente a tu turno de prácticas. Material a entregar para conseguir hasta 1 punto: Papel con las soluciones de los ejercicios del 1 al 5 Soluciones a los ejercicios del 1 al 5 cargadas en el ordenador Validate XHTML 1.0