Programación 1 - Recuperatorio Segundo Parcial - Tema 1
1 Listas, primera parte
2 Listas, segunda parte
3 Estructuras
6.12

Programación 1 - Recuperatorio Segundo Parcial - Tema 1

(06-06-2019)

1 Listas, primera parte

Ejercicio 1. Diseñe una función mapIf, que dado un predicado p, una función f y una lista l, devuelva una lista de igual longitud que l, donde se aplica la función f sólo a aquellos elementos que cumplan el predicado. Los elementos de l que no lo cumplan, permanecerán en la lista sin ser modificados.

Por ejemplo,
(check-expect (mapIf even? add1 (list 0 0 1 2))
              (list 1 1 1 3))
(check-expect (mapIf cons? lenght (list '() (list 0 0 0)))
              (list '() 3))
(check-expect (mapIf even? add1 empty)
              empty)

Dé al menos dos casos de prueba adicionales a los presentados.

Para resolver este ejercicio, no utilice foldr, filter ni map.

2 Listas, segunda parte

Al resolver este problema, utilice foldr, filter y/o map para cualquier función que requiera procesar los elementos de una lista.

Ejercicio 2. Diseñe una función cantidad-con-a, que dada una lista de listas de strings, cuente la cantidad de listas donde hay al menos una palabra que contenga la letra a
(check-expect (cantidad-con-a (list (list "al" "ba" "c") (list "de" "fg" "h")))
               1)
(check-expect (cantidad-con-a (list (list "p" "b" "c") (list "de" "fg" "hi" "ño" "tu")))
               0)
Dé al menos dos casos de prueba adicionales a los presentados.

Ayuda: Puede resultarle útil la función string-contains?

3 Estructuras

Ejercicio 3. En este ejercicio representaremos los colores basándonos en el modelo de síntesis aditiva conocido como RGB (siglas en inglés para rojo, verde, azul). Utilizaremos una estructructura de datos con tres campos: rojo, verde y azul. Cada campo puede tener un valor entero entre 0 y 255. De esta forma, podremos representar cada color como una terna donde cada campo expresa la cantidad e intensidad de cada componente en el color final. Así, el color azul lo podremos formar con la terna (0,0,255), al negro como (0,0,0) y al blanco como (255,255,255).