Download Práctica 7: Programación funcional en Scala

Document related concepts

Kotlin (lenguaje de programación) wikipedia , lookup

Cola (informática) wikipedia , lookup

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