Алергії

Алергії

Середня

Вказівки

Маючи оцінку алергії людини, визначмо, чи є в неї алергія на заданий алерген, і складімо повний список її алергій.

Тест на алергію дає одну числову оцінку, яка містить інформацію про всі алергії людини (ті, які в неї перевіряли).

Ось перелік алергенів (і їхні значення), які перевіряють:

  • eggs (1)
  • peanuts (2)
  • shellfish (4)
  • strawberries (8)
  • tomatoes (16)
  • chocolate (32)
  • pollen (64)
  • cats (128)

Тож якщо Том має алергію на peanuts і chocolate, він отримує оцінку 34.

Тепер, маючи лише цю оцінку 34, наша програма має вміти сказати:

  • Чи має Том алергію на котрийсь із перелічених вище алергенів.
  • Усі алергени, на які в Тома є алергія.

Зауваження: задана оцінка може містити алергени, не перелічені вище (тобто алергени зі значеннями 256, 512, 1024 тощо). Наша програма має ігнорувати ці складники оцінки. Наприклад, якщо оцінка алергії дорівнює 257, наша програма має повідомити лише про алергію eggs (1).

Підказки

Щоб виконати цю вправу, потрібно створити тип даних Allergen з екземплярами Eq і Show та реалізувати такі функції:

  • allergies
  • isAllergicTo

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

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

Час розпочати Алергії?

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

Глибоке занурення у Алергії!

Ми розглянемо побітовий зсув, побітове порівняння та інші поняття двійкових чисел! А ще подивимося на рішення зі зіставленням зі зразком і на цікавий підхід у Erlang з використанням рекурсії.