Якщо ми хочемо щось створити за допомогою Raspberry Pi, нам, ймовірно, знадобляться резистори. Для цієї вправи нам потрібно знати дві речі про них:
Щоб обійти цю проблему, виробники наносять на резистори кольорові смуги з кодуванням, щоб позначити їхні значення опору. Кожна смуга має позицію та числове значення.
Перші 2 смуги резистора мають просту схему кодування: кожен колір відповідає одному числу. Наприклад, якщо вони надрукували смугу brown (значення 1), а за нею смугу green (значення 5), це відповідало б числу 15.
У цій вправі ми створимо корисну програму, щоб нам не доводилося запамʼятовувати значення смуг. Програма прийматиме назви кольорів як вхідні дані та виводитиме двозначне число, навіть якщо вхідних кольорів більше двох!
Кольори смуг кодуються так:
З наведеного вище прикладу: brown-green має повертати 15, і brown-green-violet також має повертати 15, ігноруючи третій колір.
Потрібно реалізувати функцію
value :: (Color, Color) -> Int
яка приймає лише два кольори й повертає числове значення опору резистора.
Бонус - тестування властивостей:
Ця вправа - гарна нагода написати тести властивостей. Якщо раніше не доводилося їх писати, ось кілька джерел:
Ми додали один зразок тесту властивостей QuickCheck у файл тестів.
Приклади властивостей, які можна перевірити:
value (x, y) >= 10 для всіх (x, y), де x не Black
Виклик show для value (x, y) дає reverse рядка тексту (англ. string), який повертає виклик show для value (y, x).
Усі кольори мають унікальні назви. (Для будь-яких двох кольорів: якщо кольори різні, то й назви в них різні.)