Un fait peu connu sur les vampires est qu'ils doivent boire le sang de la victime qui a un groupe sanguin de donneur compatible. La matrice de compatibilité pour les vampires est la même que la matrice régulière donneur / receveur de globules rouges . Cela peut être résumé par le tableau suivant de la Croix-Rouge américaine
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-
Défi
Écrivez une fonction ou un programme qui prend un groupe sanguin en entrée et génère deux listes:
- la liste non ordonnée des types qui peuvent recevoir un don du type d'entrée
- la liste non ordonnée des types qui peuvent faire un don au type d'entrée
Si vous écrivez une fonction, veuillez également fournir un programme de test pour appeler cette fonction avec quelques exemples, afin que je puisse facilement la tester. Dans ce cas, le programme de test ne comptera pas dans votre score.
Contribution
L'entrée doit être une chaîne représentant exactement l'un des 8 types de globules rouges possibles O−
O+
A−
A+
B−
B+
AB−
AB+
. L'entrée peut être donnée via les méthodes normales (STDIN, arguments de ligne de commande, arguments de fonction, etc.).
Si une autre entrée est donnée, le programme / la fonction doit retourner une sortie vide ou renvoyer une erreur. Normalement, une vérification stricte des entrées n'est pas excellente dans les questions de code-golf , mais je me sentais, étant donné les implications pour la mort de se tromper sur les groupes sanguins, que je devrais ajouter cette règle.
Sortie
Le résultat sera deux listes lisibles par l'homme de groupes sanguins dans n'importe quel format adapté à votre langue. Dans les cas particuliers où l'une des listes de sortie contient les 8 types, cette liste peut éventuellement être remplacée par une seule liste d'articles contenant everyone
.
La sortie normale ira à l'un des endroits normaux (STDOUT, retour de fonction, etc.).
Autres règles
- Les failles standard sont interdites
- Vous pouvez utiliser toutes les bibliothèques tierces préexistantes dont vous avez besoin, tant qu'elles ne sont pas conçues expressément à cette fin.
Exemples
- Pour l'entrée
AB-
, les deux listes de sortie seraient:{AB+, AB-}, {AB-, A-, B-, O-}
- Pour l'entrée
AB+
, les deux listes de sortie seraient:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
ou{AB+}, {everyone}
Note personnelle: veuillez envisager de donner du sang si vous le pouvez. Sans la transfusion que j'ai reçue il y a quelques années, je ne serais peut-être pas ici aujourd'hui, donc je suis très reconnaissant envers ceux qui peuvent faire un don!