Маючи оцінку алергії людини, визначмо, чи є в неї алергія на заданий алерген, і складімо повний список її алергій.
Тест на алергію дає одну числову оцінку, яка містить інформацію про всі алергії людини (ті, які в неї перевіряли).
Ось перелік алергенів (і їхні значення), які перевіряють:
Тож якщо Том має алергію на peanuts і chocolate, він отримує оцінку 34.
Тепер, маючи лише цю оцінку 34, наша програма має вміти сказати:
Зауваження: задана оцінка може містити алергени, не перелічені вище (тобто алергени зі значеннями 256, 512, 1024 тощо). Наша програма має ігнорувати ці складники оцінки. Наприклад, якщо оцінка алергії дорівнює 257, наша програма має повідомити лише про алергію eggs (1).
Щоб виконати цю вправу, потрібно створити тип даних Allergen з екземплярами Eq і Show та реалізувати такі функції:
allergiesisAllergicToУ коді вже є фіктивне оголошення типу даних і сигнатури типів, але функції потрібно визначити самостійно та створити змістовний тип даних, newtype або синонім типу.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Haskell, а також 107 вправ та справжнє наставництво від людей, і все це безкоштовно.
Ми розглянемо побітовий зсув, побітове порівняння та інші поняття двійкових чисел! А ще подивимося на рішення зі зіставленням зі зразком і на цікавий підхід у Erlang з використанням рекурсії.