- Nombre del grupo: Completar
Integrantes:
-
Legajo: Completar
-
Nombre: Completar
-
Legajo: Completar
-
Nombre: Completar
Necesitás haber instalado el ambiente según se explica en el TP-0.
Si tienen dudas con Haskell pueden ayudarse todo el tiempo con esta documentación
- Guía de lenguajes, un resumen de las principales funciones que vienen con Haskell.
- Hoogle, un motor de búsqueda específico para Haskell.
Aparte, siempre pueden preguntar a sus ayudantes en discord!
Y para comenzar a trabajar con Git les recomendamos este apunte inicial de Git o estos videos donde se explica como usar Git:
- Parte 1: Qué es GIT y cómo clonar el repo basado en GitHub classroom
- Parte 2: Uso básico de GIT con status, add, reset, commit, push
- Parte 3: Resolución de conflictos
La forma que recomendamos de resolver el ejercicio es no programar todo de una y después ver si anda, si no ir probando en cada paso a medida que van programando cada función.
Para esto, les recomiendo que usen mucho stack ghci
para probar cosas por consola, y vuelvo a linkear esta página donde se explican un par de cositas de como usar ghci
.
Acá vamos a definir un par de funciones muy útiles, max
y min
.
- max toma dos valores como parámetro y nos devuelve aquel que sea mas grande
- min toma lo mismo que max pero nos devuelve el que sea mas chico.
Entonces, yo puedo hacer min 2 3
y el resultado sería 2
, y si hago max 3 15.5
el resultado debería ser 15.5.
Como estas funciones ya existen en Haskell, pero queremos definirlas igual para practicar, vamos a ponerles de nombre max'
y min'
(el ' es un caracter valido para las funciones en Haskell), y en este ejercicio no vale definirlas como max' = max
;).
- cuantosDiasTiene, que dado un año nos devuelve la cantidad de días de ese año. Un año tiene 365 días si no es bisiesto y 366 si sí lo es.
- En un supermercado hay una promoción al comprar al por mayor, entonces queremos definir una función precioTotal que represente esa promoción. Las reglas de la misma son, dado el valor unitario del producto y la cantidad de productos comprados:
- Si se compraron menos de 3, el total es el precio del producto por la cantidad.
- Si se compraron entre 3 y 10, el total es el 90% del precio del producto por la cantidad.
- Si se compraron 10 o mas, el total es el 70% del precio del producto por la cantidad.
En una plantación de pinos, de cada árbol se conoce la altura expresada en metros. El peso de un pino se puede calcular a partir de la altura así:
- 3 kg por cada centímetro hasta 3 metros,
- 2 kg por cada centímetro arriba de los 3 metros.
Por ejemplo:
- 2 metros pesan 600 kg, porque 200 * 3 = 600
- 5 metros pesan 1300 kg, porque los primeros 3 metros pesan 900 kg y los siguientes 2 pesan los 400 restantes.
Los pinos se usan para llevarlos a una fábrica de muebles, a la que le sirven árboles de entre 400 y 1000 kilos, un pino fuera de este rango no le sirve a la fábrica. Entonces, un pino de 2 metros serviría porque pesa 600kg, pero un pino de 5 metros no serviría porque pesa 1300kg.
Vamos a definir las siguientes funciones, y en este punto, todas van a ser tipadas por ustedes:
- pesoPino: recibe la altura de un pino en metros y devuelve su peso.
- esPesoUtil: recibe un peso en kg y responde si un pino de ese peso le sirve a la fábrica
- sirvePino: recibe la altura de un pino y responde si un pino de ese peso le sirve a la fábrica.
Para las funciones de este punto hay que escribir los tests.
Cuando terminen, creen un issue etiquetando a sus tutores así les llega una notificación y se corrigen y les dejan feedback ahí.