Un hecho poco conocido sobre los vampiros es que deben beber la sangre de la víctima que tiene un tipo de sangre de donante compatible. La matriz de compatibilidad para vampiros es la misma que la matriz regular de donantes / receptores de glóbulos rojos . Esto se puede resumir en la siguiente tabla de la Cruz Roja Americana
Type You Can Give Blood To You Can Receive Blood From
A+ A+, AB+ A+, A-, O+, O-
O+ O+, A+, B+,AB+ O+, O-
B+ B+, AB+ B+, B-, O+, O-
AB+ AB+ everyone
A- A+, A-, AB+, AB- A-, O-
O- everyone O-
B- B+, B-, AB+, AB- B- O-
AB- AB+, AB- AB-, A-, B-, O-
Reto
Escriba una función o programa que tome un tipo de sangre como entrada y genere dos listas:
- la lista desordenada de tipos que pueden recibir donación del tipo de entrada
- la lista desordenada de tipos que pueden donar al tipo de entrada
Si escribe una función, proporcione también un programa de prueba para llamar a esa función con algunos ejemplos, para que pueda probarla fácilmente. En este caso, el programa de prueba no contaría para su puntaje.
Entrada
La entrada debe ser una cadena que represente exactamente uno de los 8 posibles tipos de glóbulos rojos O−
O+
A−
A+
B−
B+
AB−
AB+
. La entrada puede darse a través de los métodos normales (STDIN, argumentos de línea de comandos, argumentos de función, etc.).
Si se proporciona cualquier otra entrada, entonces el programa / función debe devolver una salida vacía o arrojar un error. Normalmente, la comprobación estricta de las entradas no es excelente en las preguntas de código de golf , pero me pareció que, dada la implicación de muerte o muerte de los tipos de sangre incorrectos, debería agregar esta regla.
Salida
La salida será dos listas de tipos de sangre legibles por humanos en cualquier formato que sea adecuado para su idioma. En los casos especiales en los que una de las listas de salida contiene los 8 tipos, esta lista puede reemplazarse opcionalmente por una lista de elementos única que contenga everyone
.
La salida normal irá a uno de los lugares normales (STDOUT, retorno de función, etc.).
Otras reglas
- Las lagunas estándar están prohibidas
- Puede usar las bibliotecas de terceros preexistentes que necesite, siempre que no estén diseñadas explícitamente para este propósito.
Ejemplos
- Para la entrada
AB-
, las dos listas de salida serían:{AB+, AB-}, {AB-, A-, B-, O-}
- Para la entrada
AB+
, las dos listas de salida serían:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
o{AB+}, {everyone}
Nota personal: considere donar sangre si puede. Sin la transfusión que recibí hace unos años, es posible que no esté aquí hoy, ¡así que me siento muy agradecido con aquellos que pueden donar!