Parcial de Taller de Álgebra 2015

De Cuba-Wiki
La versión para imprimir ya no se admite y puede contener errores de representación. Actualiza los marcadores del navegador y utiliza en su lugar la función de impresión predeterminada del navegador.

En las clases usamos Haskell, por lo que el parcial se basaba en Haskell. Para aprobar había que tener al menos 2 ejercicios completamente bien resueltos. El ejercicio 4 era un bonus track, más difícil que los otros.

Ejercicio 1

Programe la función esMultiploDe :: Integer -> Integer -> Bool que devuelve verdadero si el segundo parámetro es múltiplo del primero. Por ejemplo:

  • esMultiploDe 3 33 devuelve True
  • esMultiploDe 17 23 devuelve False

Aclaración: para este ejercicio no está permitido utilizar div, mod ,/ ,* ni equivalentes..

Ejercicio 2

Programe la función intercalar :: [a] -> [a] -> [a] que recibe dos listas de igual longitud y devuelve una lista del doble de esa longitud, con los elementos de ambas listas intercalados. Por ejemplo:

  • intercalar [107,33,45] [28,42,37] devuelve [107,28,33,42,45,37]

Ejercicio 3

Programe la función quitarTodosLos :: Integer -> [Integer] -> [Integer] de modo tal que quitarTodosLos x xs devuelva la lista xs pero sin ninguna aparición del elemento x. Por ejemplo:

  • quitarTodosLos 8 [8,5,3,9,8,2,8,7] devuelve [5,3,9,2,7]

Ejercicio 4

Programe la función comprimir :: [Integer] -> [(Integer,Integer)] que devuelva una lista que contenga una tupla (elemento, cantVeces) por cada tira de elementos iguales adyacentes. Por ejemplo:

  • comprimir [7,7,4,4,4,4,4,3,3,3] devuelve [(7,2),(4,5),(3,3)]

Sugerencia: empiece reemplazando cada elemento e por una tupla (e,1).