トラック
/
C++
C++
/
演習
/
アレルギー
アレルギー

アレルギー

初級

説明

ある人のアレルギースコアが与えられたとき、その人が特定の項目にアレルギーがあるかどうかと、アレルギーの一覧全体を判定します。

アレルギー検査では、1つの数値のスコアが得られます。このスコアには、その人が持つ(検査の対象となった)すべてのアレルギーの情報が含まれています。

検査の対象となった項目(とその値)は次のとおりです。

  • 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)のアレルギーだけを報告します。

C++実装に関する補足

この演習ではunordered_setを使います。 集合に要素を追加するには、おそらくemplace関数が必要です。

シラバスにはまだ出てきていませんが、constに突然出会うかもしれません。 変数の前に付けると、安全装置のように働きます。 constが付いた変数は変更できません。 この演習には、unsignedというキーワードも登場します。 これを付けた整数は、扱える範囲が2倍になりますが、負の値になることはありません。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
C++ Exercism

アレルギーを始める準備はできましたか?

Exercismに登録すれば、19個のコンセプト100個の演習、そして本物の人間によるメンタリングとともに、C++を学んでマスターできます。すべて無料です。

アレルギーを深く掘り下げよう!

ビットシフト、ビット単位の比較、その他の2進数の概念を探求します! パターンマッチングを使った解答と、Erlangでの再帰を使った興味深いアプローチも見ていきます。