Eine wenig bekannte Tatsache über Vampire ist, dass sie das Blut eines Opfers mit einer kompatiblen Spenderblutgruppe trinken müssen. Die Kompatibilitätsmatrix für Vampire ist die gleiche wie die normale Spender / Empfänger-Matrix für rote Blutkörperchen . Dies kann durch die folgende Tabelle des Amerikanischen Roten Kreuzes zusammengefasst werden
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-
Herausforderung
Schreiben Sie eine Funktion oder ein Programm, das eine Blutgruppe als Eingabe verwendet und zwei Listen ausgibt:
- die ungeordnete Liste der Typen, die eine Spende des Eingabetyps erhalten können
- die ungeordnete Liste der Typen, die dem Eingabetyp eine Spende geben können
Wenn Sie eine Funktion schreiben, stellen Sie bitte auch ein Testprogramm zum Aufrufen dieser Funktion mit einigen Beispielen bereit, damit ich sie problemlos testen kann. In diesem Fall würde das Testprogramm nicht auf Ihre Punktzahl angerechnet.
Eingang
Die Eingabe muss eine Zeichenfolge sein, die genau einen der 8 möglichen roten Blutkörperchentypen darstellt O−
O+
A−
A+
B−
B+
AB−
AB+
. Die Eingabe kann über die normalen Methoden (STDIN, Befehlszeilenargumente, Funktionsargumente usw.) erfolgen.
Wenn eine andere Eingabe erfolgt, muss das Programm / die Funktion eine leere Ausgabe zurückgeben oder einen Fehler auslösen. Normalerweise ist eine strenge Eingabeüberprüfung bei Code-Golf- Fragen nicht besonders wichtig , aber ich hatte das Gefühl, dass ich diese Regel hinzufügen sollte, wenn die Auswirkungen auf Leben und Tod falsch sind.
Ausgabe
Es werden zwei für Menschen lesbare Listen von Blutgruppen in dem für Ihre Sprache geeigneten Format ausgegeben. In besonderen Fällen, in denen eine der Ausgabelisten alle 8 Typen enthält, kann diese Liste optional durch eine einzelne Artikelliste mit ersetzt werden everyone
.
Die normale Ausgabe erfolgt an eine der normalen Stellen (STDOUT, Funktionsrückgabe usw.).
Andere Regeln
- Standardlücken sind verboten
- Sie können vorhandene Bibliotheken von Drittanbietern verwenden, sofern diese nicht ausdrücklich für diesen Zweck entwickelt wurden.
Beispiele
- Für die Eingabe
AB-
wären die beiden Ausgabelisten:{AB+, AB-}, {AB-, A-, B-, O-}
- Für die Eingabe
AB+
wären die beiden Ausgabelisten:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
oder{AB+}, {everyone}
Persönliche Notiz: Bitte überlegen Sie, ob Sie Blut spenden können. Ohne die Transfusion, die ich vor ein paar Jahren erhalten habe, könnte ich heute nicht hier sein, deshalb bin ich denen sehr dankbar, die spenden können!