사람의 알레르기 점수가 주어졌을 때, 그 사람이 주어진 항목에 알레르기가 있는지 없는지, 그리고 그 사람의 전체 알레르기 목록은 무엇인지 판별해요.
알레르기 검사는 그 사람이 검사받은 모든 알레르기에 대한 정보를 담고 있는 숫자 점수 하나를 만들어요.
검사한 항목과 그 값은 다음과 같아요:
예를 들어 Tom이 peanuts와 chocolate에 알레르기가 있다면, Tom의 점수는 34가 돼요.
이제 34점만 주어졌을 때, 프로그램은 다음을 알려줄 수 있어야 해요:
참고: 어떤 점수에는 위에 나열되지 않은 알레르기 유발 물질도 포함될 수 있어요(즉, 256, 512, 1024 등의 점수에 해당하는 알레르기 유발 물질). 프로그램은 점수의 이런 부분은 무시해야 해요. 예를 들어 알레르기 점수가 257이라면, 프로그램은 eggs (1) 알레르기만 보고해야 해요.
EnumSetstd.enums.EnumSet의 구현을 살펴보는 것이 도움이 될 수 있어요.
비트 시프트, 비트 단위 비교를 비롯한 여러 이진수 개념을 살펴봐요! 패턴 매칭을 사용한 풀이와 Erlang에서 재귀를 사용한 흥미로운 접근법도 함께 살펴봐요.