Étant donné le score d'allergie d'une personne, détermine si elle est allergique ou non à un élément donné, ainsi que la liste complète de ses allergies.
Un test d'allergie produit un score numérique unique qui contient les informations sur toutes les allergies de la personne (celles pour lesquelles elle a été testée).
La liste des éléments testés (et leur valeur) est la suivante :
Ainsi, si Tom est allergique aux peanuts et au chocolate, il obtient un score de 34.
Maintenant, avec seulement ce score de 34, ton programme doit pouvoir dire :
Remarque : un score donné peut inclure des allergènes non listés ci-dessus (c'est-à-dire des allergènes dont le score est 256, 512, 1024, etc.). Ton programme doit ignorer ces composantes du score. Par exemple, si le score d'allergie est 257, ton programme ne doit rapporter que l'allergie eggs (1).
Pour venir à bout de cet exercice, tu dois créer le type de données Allergen, avec les instances Eq et Show, et implémenter les fonctions suivantes :
allergiesisAllergicToTu trouveras une déclaration de données factice et des signatures de type déjà en place, mais c'est à toi de définir les fonctions et de créer un type de données, un newtype ou un synonyme de type qui a du sens.
Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.
On explore le décalage de bits, la comparaison bit à bit et d'autres concepts sur les nombres binaires ! On jette aussi un œil à une solution qui utilise le filtrage par motif, ainsi qu'à une approche intéressante en Erlang reposant sur la récursivité.