Треки
/
Lean
Lean
/
Вправи
/
Тріо кольорів резистора
Тріо кольорів резистора

Тріо кольорів резистора

Середня

Вказівки

Якщо ми хочемо щось зібрати на Raspberry Pi, то, найімовірніше, використаємо резистори. Для цієї вправи про них потрібно знати лише три речі:

  • Кожен резистор має значення опору.

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

  • Кожна смуга позначає цифру числа. Наприклад, якби вони надрукували смугу brown (значення 1), а за нею смугу green (значення 5), це відповідало б числу 15. У цій вправі ми створимо корисну програму, щоб нам не доводилося запамʼятовувати значення смуг. Програма прийматиме 3 кольори як вхідні дані й видаватиме правильне значення в омах. Кольорові смуги кодуються так:

  • black: 0

  • brown: 1

  • red: 2

  • orange: 3

  • yellow: 4

  • green: 5

  • blue: 6

  • violet: 7

  • grey: 8

  • white: 9

У вправі Resistor Color Duo ми розшифрували перші два кольори. Наприклад: orange-orange дає основне значення 33. Третій колір показує, скільки нулів потрібно додати до основного значення. Основне значення плюс нулі дає значення в омах. Для цієї вправи не має значення, чим насправді є оми. Наприклад:

  • orange-orange-black дає 33 і жодного нуля, тобто 33 ohms.
  • orange-orange-red дає 33 і 2 нулі, тобто 3300 ohms.
  • orange-orange-orange дає 33 і 3 нулі, тобто 33000 ohms.

(Якщо математика нам до вподоби, можемо уявити нулі як степені десяти. Якщо ні, просто працюймо з нулями. Насправді це те саме, лише простою мовою, а не математичним жаргоном.)

Ця вправа полягає в тому, щоб перетворити кольори на мітку:

"... ohms"

Тож вхід "orange", "orange", "black" має повернути:

"33 ohms"

Коли йдеться про більші резистори, для позначення більшої величини опору використовують метричний префікс, наприклад «kiloohms». Це схоже на «2 кілометри» замість «2000 метрів» або «2 кілограми» замість «2000 грамів».

Наприклад, вхід "orange", "orange", "orange" має повернути:

"33 kiloohms"

Визначення синтаксису

Caution

Ця вправа задумана як продовження Resistor Color Duo і спирається на неї. Хоча практичні вправи можна розвʼязувати в будь-якому порядку, радимо дотримуватися запропонованої послідовності.

У цій вправі вже дано синтаксис для кольорів із префіксом c*, наприклад c*black. Далі визначте синтаксис, який зіставляє послідовність кольорів зі значенням опору та його одиницею SI, можливо, з метричним префіксом, згідно з інструкціями. Кольори містяться між *[[ і ]] та розділені , , наприклад *[[c*black, c*yellow, c*violet]].

Це завдання, найімовірніше, вимагатиме від вас використання нотацій або макросів. Можете зазирнути до довідки.

Оскільки новий синтаксис розкривається під час компіляції, будь-який тест не скомпілюється, якщо не визначити весь потрібний синтаксис. Тому замість традиційних тестів часу виконання ми використовуємо #guard_msgs. Ця команда порівнює заданий докстрінг із повідомленням, яке генерує інша команда, у цьому випадку #eval, і повідомляє про помилку, якщо вони різняться. Відсутність помилки можна вважати успішним тестом.

Якщо працювати локально або в онлайн-пісочниці Lean, будь-яку помилку, про яку повідомить #guard_msgs, буде одразу видно через Lean InfoView.

Note

Значення опору треба виводити з одиницею Ω (ом). Цей символ Unicode можна ввести локально або в онлайн-пісочниці Lean за допомогою скорочення \ohm. Якщо працювати в онлайн-редакторі Exercism, цей символ можна просто скопіювати з інструкцій.

Caution

Онлайн-виконавець тестів наразі не підтримує імпорту повної бібліотеки метапрограмування Lean. Можна вільно користуватися будь-якими можливостями, доступними в Lean типово, зокрема тими, що в просторі назв Lean, але додавання import Lean чи імпорт окремих модулів із простору назв Lean призведе до того, що подання не пройде під час надсилання на Exercism.

Зауважте, що для розвʼязання цієї вправи імпортувати бібліотеку Lean не потрібно.

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

Час розпочати Тріо кольорів резистора?

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