Треки
/
Elixir
Elixir
/
Вправи
/
Ставки фрилансера
Ставки фрилансера

Ставки фрилансера

Навчальна вправа

Вступ

Цілі числа

В Elixir є два різних види чисел: цілі числа та числа з плаваючою комою.

Цілі числа - це числа без дробової частини.

integer = 3
# => 3

Числа з плаваючою комою

Числа з плаваючою комою - це числа з однією або більше цифрами після десяткового розділювача. Вони використовують 64-бітний формат із плаваючою комою подвійної точності.

float = 3.45
# => 3.45

Робота з числами

У модулях Integer і Float можна знайти корисні функції для роботи з цими типами. Базові арифметичні оператори визначено в модулі Kernel.

Перетворення

Цілі числа та числа з плаваючою комою можна поєднувати в одному арифметичному виразі. Якщо у виразі використати число з плаваючою комою, результат теж буде числом з плаваючою комою.

2 * 3
# => 6

2 * 3.0
# => 6.0

Однак під час ділення результат завжди буде числом з плаваючою комою, навіть якщо використано лише цілі числа.

6 / 2
# => 3.0

Щоб перетворити число з плаваючою комою на ціле число, можна відкинути дробову частину за допомогою trunc/1.

Вказівки

У цій вправі ми будемо писати код, який допоможе фрилансерові спілкуватися з менеджером проєкту. Наше завдання - надати кілька інструментів для швидкого обчислення денних і місячних ставок, за потреби із заданою знижкою.

Спершу встановімо кілька правил між фрилансером і менеджером проєкту:

  • Денна ставка у 8 разів більша за погодинну ставку.
  • У місяці 22 оплачувані дні.

Іноді фрилансер пропонує застосувати знижку до своєї денної ставки (наприклад, для найвідданіших клієнтів або для неприбуткових організацій).

Знижки подаються як дробові числа, що позначають відсотки, наприклад, 25.0 (25%).

1. Обчисліть денну ставку за погодинною ставкою

Реалізуйте функцію daily_rate, яка обчислює денну ставку за заданою погодинною ставкою, переданою як параметр. Домовленість визначає, що день має 8 оплачуваних годин.

FreelancerRates.daily_rate(60)
# => 480.0

Повернена денна ставка має бути числом з плаваючою комою.

2. Обчисліть ціну зі знижкою

Реалізуйте функцію apply_discount, щоб обчислити ціну після застосування знижки.

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

Повернене значення завжди має бути числом з плаваючою комою, без жодного округлення.

3. Обчисліть місячну ставку за погодинною ставкою та знижкою

Реалізуйте функцію monthly_rate, яка обчислює місячну ставку зі знижкою. Вона приймає два параметри: погодинну ставку та знижку у відсотках.

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

Повернену місячну ставку слід округлити вгору (до найближчого більшого цілого).

4. Обчисліть кількість повних робочих днів за бюджетом, погодинною ставкою та знижкою

Реалізуйте функцію days_in_budget, яка приймає бюджет, погодинну ставку та знижку й обчислює, на скільки повних робочих днів цього вистачить.

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

Повернену кількість днів слід округлити вниз (до найближчого меншого) до одного знака після коми.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Elixir Exercism

Час розпочати Ставки фрилансера?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.