Un fatto poco noto sui vampiri è che devono bere il sangue della vittima che ha un gruppo sanguigno donatore compatibile. La matrice di compatibilità per i vampiri è la stessa della normale matrice donatore / ricevente dei globuli rossi . Questo può essere riassunto dalla seguente tabella della Croce Rossa 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-
Sfida
Scrivi una funzione o un programma che prende un gruppo sanguigno come input e genera due elenchi:
- l'elenco non ordinato di tipi che possono ricevere donazioni del tipo di input
- l'elenco non ordinato di tipi che possono offrire donazioni al tipo di input
Se scrivi una funzione, ti preghiamo di fornire anche un programma di test per chiamare quella funzione con alcuni esempi, così posso facilmente provarla. In questo caso, il programma di test non conta ai fini del punteggio.
Ingresso
L'input deve essere una stringa che rappresenta esattamente uno degli 8 possibili tipi di globuli rossi O−
O+
A−
A+
B−
B+
AB−
AB+
. L'input può essere fornito tramite i metodi normali (STDIN, arg della riga di comando, arg della funzione, ecc.).
Se viene fornito qualsiasi altro input, il programma / funzione deve restituire output vuoto o generare un errore. Normalmente un rigoroso controllo degli input non è eccezionale nelle domande sul code-golf , ma mi sono sentito dato le implicazioni di morte e morte di sbagliare i gruppi sanguigni che avrei dovuto aggiungere questa regola.
Produzione
L'output sarà costituito da due elenchi leggibili dall'uomo di gruppi sanguigni in qualsiasi formato adatto alla tua lingua. Nei casi speciali in cui uno dell'elenco di output contiene tutti e 8 i tipi, questo elenco può facoltativamente essere sostituito con un singolo elenco di elementi contenente everyone
.
L'uscita normale andrà in uno dei posti normali (STDOUT, ritorno funzione, ecc.).
Altre regole
- Le scappatoie standard sono vietate
- Puoi utilizzare qualsiasi libreria di terze parti preesistente di cui hai bisogno, a condizione che non siano progettate esplicitamente per questo scopo.
Esempi
- Per l'input
AB-
, i due elenchi di output sarebbero:{AB+, AB-}, {AB-, A-, B-, O-}
- Per l'input
AB+
, i due elenchi di output sarebbero:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
o{AB+}, {everyone}
Nota personale: si prega di considerare la donazione di sangue se si è in grado di farlo. Senza la trasfusione che ho ricevuto qualche anno fa, potrei non essere qui oggi, quindi sono molto grato a coloro che sono in grado di donare!