過敏

過敏

中等

說明

給定一個人的過敏分數,判斷他是否對某個特定項目過敏,並列出他全部的過敏項目。

過敏測試會產生一個數字分數,這個分數包含這個人所有(曾接受測試的)過敏項目的資訊。

接受測試的項目(與其對應數值)如下:

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

所以,如果 Tom 對 peanuts 和 chocolate 過敏,他的分數就是 34。

現在,只給你 34 這個分數,你的程式應該要能回答:

  • Tom 是否對上面列出的任何一種過敏原過敏。
  • Tom 對哪些過敏原過敏(全部)。

注意:某個分數可能包含不在上面清單裡的過敏原(也就是分數為 256、512、1024 等以上的過敏原)。 你的程式應該忽略分數中的這些部分。 例如,如果過敏分數是 257,你的程式應該只回報 eggs(1)這項過敏。

附錄

Note

上述說明與共用儲存庫保持同步,以確保所有語言 track 之間維持一致。 本附錄會視需要提供額外的釐清,或修改這些說明,以更貼近 Clojure track 的目標。

在 Clojure track 的這道練習中,你可以假設 allergies 函式的輸出是向量,如測試所示。 不過,這並不是硬性要求;你可以自由回傳任何序列集合。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Clojure Exercism

準備好開始 過敏 了嗎?

註冊 Exercism,透過 12 個概念105 個練習 和真人引導來學習並精通 Clojure,全部免費。

深入探索 過敏!

我們會探索位元位移、位元比較以及其他二進位數字的概念!我們也會看看一個使用模式比對的解法,以及在 Erlang 中用遞迴的有趣做法。