Rutas
/
Elixir
Elixir
/
Ejercicios
/
Tarifas de freelance
Tarifas de freelance

Tarifas de freelance

Ejercicio de aprendizaje

Introducción

Números enteros

En Elixir hay dos tipos de números diferentes: los enteros y los números de coma flotante.

Los números enteros son números sin parte decimal.

integer = 3
# => 3

Números de coma flotante

Los números de coma flotante son números con uno o más dígitos después del separador decimal. Utilizan el formato de coma flotante de doble precisión de 64 bits.

float = 3.45
# => 3.45

Trabajar con números

En los módulos Integer y Float puedes encontrar algunas funciones útiles para trabajar con estos tipos. Los operadores aritméticos básicos están definidos en el módulo Kernel.

Conversión

Los números enteros y los de coma flotante se pueden mezclar en una misma expresión aritmética. Si usas un número de coma flotante en una expresión, el resultado también será un número de coma flotante.

2 * 3
# => 6

2 * 3.0
# => 6.0

Sin embargo, al hacer una división, el resultado siempre será un número de coma flotante, incluso si solo se usan números enteros.

6 / 2
# => 3.0

Para convertir un número de coma flotante en uno entero, puedes descartar la parte decimal con trunc/1.

Instrucciones

En este ejercicio vas a escribir código para ayudar a un freelancer a comunicarse con un jefe de proyecto. Tu tarea es proporcionar unas cuantas utilidades que calculen rápidamente tarifas diarias y mensuales, opcionalmente con un descuento dado.

Primero establecemos unas cuantas reglas entre el freelancer y el jefe de proyecto:

  • La tarifa diaria es 8 veces la tarifa por hora.
  • Un mes tiene 22 días facturables.

A veces, el freelancer ofrece aplicar un descuento sobre su tarifa diaria (por ejemplo, para sus clientes más fieles o para clientes sin ánimo de lucro).

Los descuentos se modelan como números fraccionarios que representan porcentajes, por ejemplo, 25.0 (25%).

1. Calcular la tarifa diaria dada una tarifa por hora

Implementa una función llamada daily_rate que calcule la tarifa diaria dada una tarifa por hora como parámetro. El contrato define que un día tiene 8 horas facturables.

FreelancerRates.daily_rate(60)
# => 480.0

La tarifa diaria devuelta debe ser un número de coma flotante.

2. Calcular un precio con descuento

Implementa una función apply_discount que calcule el precio después de aplicar un descuento.

FreelancerRates.apply_discount(150, 10)
# => 135.0

El valor devuelto debe ser siempre un número de coma flotante, sin redondear de ninguna manera.

3. Calcular la tarifa mensual a partir de una tarifa por hora y un descuento

Implementa una función monthly_rate que calcule la tarifa mensual con descuento. Recibe dos parámetros, una tarifa por hora y el descuento en porcentaje.

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

La tarifa mensual devuelta debe redondearse hacia arriba al entero más cercano.

4. Calcular el número de días completos de trabajo a partir de un presupuesto, una tarifa por hora y un descuento

Implementa una función days_in_budget que reciba un presupuesto, una tarifa por hora y un descuento, y calcule cuántos días completos de trabajo cubre eso.

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

El número de días devuelto debe redondearse hacia abajo a un decimal.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Elixir Exercism

¿Listo para empezar Tarifas de freelance?

Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.