ある人のアレルギー点数が与えられたとき、その人が特定の項目にアレルギーがあるかどうかと、アレルギーの一覧全体を判定します。
アレルギー検査では、その人が(検査を受けた)すべてのアレルギーに関する情報を含む、1つの数値の点数が得られます。
検査された項目(とその値)の一覧は次のとおりです。
つまり、Tomがpeanutsとchocolateにアレルギーがあるなら、点数は34になります。
では、この34という点数だけが与えられたとき、プログラムは次のことを言える必要があります。
注意:与えられた点数には、上に挙げられていないアレルゲン(つまり、256、512、1024などの値を持つアレルゲン)が含まれていることがあります。プログラムは、点数のそれらの成分を無視する必要があります。たとえば、アレルギー点数が257の場合、プログラムはeggs(1)のアレルギーだけを報告します。
ビットシフト、ビット単位の比較、その他の2進数の概念を探求します! パターンマッチングを使った解答と、Erlangでの再帰を使った興味深いアプローチも見ていきます。