Alergias

Alergias

Fácil

Instrucciones

Dada la puntuación de alergias de una persona, determina si tiene o no alergia a un elemento dado, y su lista completa de alergias.

Una prueba de alergias produce una única puntuación numérica que contiene la información sobre todas las alergias que tiene la persona (aquellas para las que fue evaluada).

La lista de elementos (y su valor) que se evaluaron es:

  • huevos (1)
  • maní (2)
  • mariscos (4)
  • fresas (8)
  • tomates (16)
  • chocolate (32)
  • polen (64)
  • gatos (128)

Entonces, si Tom es alérgico al maní y al chocolate, obtiene una puntuación de 34.

Ahora, dada solo esa puntuación de 34, tu programa debería poder decir:

  • Si Tom es alérgico a alguno de esos alérgenos listados arriba.
  • Todos los alérgenos a los que Tom es alérgico.

Nota: una puntuación dada puede incluir alérgenos no listados arriba (es decir, alérgenos que valen 256, 512, 1024, etc.). Tu programa debería ignorar esos componentes de la puntuación. Por ejemplo, si la puntuación de alergias es 257, tu programa solo debería reportar la alergia a los huevos (1).

Notas adicionales para la implementación en C++

Este ejercicio usa el unordered_set Probablemente necesites la función emplace para agregar elementos al conjunto.

Puede que te topes con const porque todavía no ha aparecido en el temario. Cuando precede a una variable, funciona como una salvaguarda. Las variables const no se pueden cambiar. Este ejercicio también incluye la palabra clave unsigned. Esto duplica el rango del entero al que precede, pero no permite que se vuelva negativo.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C++ Exercism

¿Todo listo para empezar Alergias?

Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.

¡Profundiza en Alergias!

¡Exploramos el desplazamiento de bits, la comparación a nivel de bits y otros conceptos de números binarios! También echamos un vistazo a una solución que usa coincidencia de patrones y a un enfoque interesante en Erlang que usa recursión.