Треки
/
Clojure
Clojure
/
Вправи
/
Автомобілі, збираймося!
Автомобілі, збираймося!

Автомобілі, збираймося!

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

Вступ

Числа в Clojure бувають такими:

  • Цілі числа: числа, у яких після десяткового розділювача немає цифр (без дробової частини). Приклади: -6, 0, 1, 25, 976 і 500000.
  • Числа з плаваючою комою: числа, у яких після десяткового розділювача є нуль або більше цифр. Приклади: -2.4, 0.1, 3.14, 16.984025 і 1024.0.

Два поширені числові типи - це int і float. int - 32-бітове ціле число, а float - 64-бітове число з плаваючою комою.

Арифметичні дії виконуються за допомогою стандартних арифметичних операторів. Числа можна порівнювати за допомогою стандартних операторів порівняння чисел (>, <, <=, >=), оператора рівності (=) і оператора нерівності (not=).

У цій вправі нам потрібно умовно виконувати логіку. У Clojure для цього часто використовують cond:

(cond (= x 5) "Expression to evaluate when x equals 5"
      (> x 7) "Expression to evaluate when x is greater than 7"
      :else   "Expression to evaluate in all other cases")

Примітка

Оператор == може бути кращим за = у деяких випадках, коли числа потрібно порівнювати незалежно від їхнього точного типу. Наприклад,

(== 5.0 5) ;; true as both numbers are equal when type is ignored
(= 5.0 5) ;; false as the types of numbers are also taken into account here i.e. float is different from int

Посібник Clojure з рівності, а саме розділ Числа, містить докладнішу інформацію.

Вказівки

У цій вправі ми будемо писати код для аналізу виробництва на складальному конвеєрі автомобільного заводу. Швидкість конвеєра може бути від 0 (вимкнено) до 10 (максимум).

За найнижчої швидкості (1) щогодини виробляється 221 автомобіль. Виробництво зростає лінійно зі швидкістю. Тож за швидкості 4 має вироблятися 4 * 221 = 884 автомобілі на годину. Однак вища швидкість підвищує ймовірність появи бракованих автомобілів, які потім доводиться відкидати. У таблиці нижче показано, як швидкість впливає на частку успішних автомобілів:

  • 0: 0% успішних.
  • від 1 до 4: 100% успішних.
  • від 5 до 8: 90% успішних.
  • 9: 80% успішних.
  • 10: 77% успішних.

На нас чекають два завдання.

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

Реалізуйте функцію production-rate, щоб обчислити продуктивність конвеєра за годину з урахуванням частки успішних автомобілів:

(production-rate 6)
;;=> 1193.4

Зверніть увагу, що повернене значення має тип double.

2. Обчисліть кількість справних автомобілів, вироблених за хвилину

Реалізуйте функцію working-items, щоб обчислити, скільки справних автомобілів виробляється за хвилину:

(working-items 6)
;;=> 19

Зверніть увагу, що повернене значення має тип int.

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

Час розпочати Автомобілі, збираймося!?

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