Tracks
/
Elixir
Elixir
/
Ejercicios
/
Tarifas de freelancer
Tarifas de freelancer

Tarifas de freelancer

Ejercicio de aprendizaje

Introducción

Enteros

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

Los enteros son números sin parte decimal.

integer = 3
# => 3

Números de punto flotante

Un número de punto flotante es un número con uno o más dígitos detrás del separador decimal. Usan el formato de punto flotante de doble precisión de 64 bits.

float = 3.45
# => 3.45

Cómo trabajar con números

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

Conversión

Los enteros y los números de punto flotante se pueden mezclar en una misma expresión aritmética. Usar un número de punto flotante en una expresión asegura que el resultado también sea un número de punto flotante.

2 * 3
# => 6

2 * 3.0
# => 6.0

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

6 / 2
# => 3.0

Para convertir un número de punto flotante a un 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 gerente de proyecto. Tu tarea es proporcionar algunas utilidades para calcular rápidamente tarifas diarias y mensuales, opcionalmente con un descuento dado.

Primero establecemos algunas reglas entre el freelancer y el gerente 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 leales o clientes sin fines de lucro).

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

1. Calcula la tarifa diaria a partir de una tarifa por hora

Implementa una función llamada daily_rate para calcular la tarifa diaria a partir de 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 punto flotante.

2. Calcula un precio con descuento

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

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

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

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

Implementa una función monthly_rate para calcular 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 (tomar el techo) al entero más cercano.

4. Calcula la cantidad de días de trabajo completos 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.

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

La cantidad de días devuelta debe redondearse hacia abajo (tomar el piso) con un decimal.

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

¿Todo listo para empezar Tarifas de freelancer?

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