Allergie

Allergie

Medio

Istruzioni

Dato il punteggio delle allergie di una persona, determina se è allergica o meno a un determinato elemento e l'elenco completo delle sue allergie.

Un test allergologico produce un unico punteggio numerico che contiene le informazioni su tutte le allergie della persona (quelle per cui è stata testata).

L'elenco degli elementi testati (con il loro valore) è:

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

Quindi, se Tom è allergico a peanuts e chocolate, ottiene un punteggio di 34.

Ora, dato solo quel punteggio di 34, il programma dovrebbe essere in grado di dire:

  • Se Tom è allergico a uno qualsiasi di quegli allergeni elencati sopra.
  • Tutti gli allergeni a cui Tom è allergico.

Nota: un determinato punteggio può includere allergeni non elencati sopra (cioè allergeni che valgono 256, 512, 1024, ecc.). Il programma dovrebbe ignorare quelle componenti del punteggio. Per esempio, se il punteggio delle allergie è 257, il programma dovrebbe segnalare solo l'allergia eggs (1).

Suggerimenti

Per completare questo esercizio devi creare il tipo di dato Allergen, con istanze Eq e Show, e implementare le seguenti funzioni:

  • allergies
  • isAllergicTo

Troverai una dichiarazione di dati fittizia e le firme di tipo già presenti, ma tocca a te definire le funzioni e creare un tipo di dato significativo, un newtype o un sinonimo di tipo.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Haskell Exercism

Vuoi iniziare Allergie?

Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.

Approfondimento su Allergie!

Esploriamo lo spostamento di bit, il confronto bit a bit e altri concetti sui numeri binari! Diamo anche un'occhiata a una soluzione che usa il pattern matching e a un approccio interessante in Erlang basato sulla ricorsione.