Fakta kecil yang diketahui tentang vampir adalah bahwa mereka harus meminum darah korban yang memiliki golongan darah donor yang kompatibel. Matriks kompatibilitas untuk vampir sama dengan matriks donor / penerima sel darah merah biasa . Ini dapat diringkas oleh tabel Palang Merah Amerika berikut ini
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-
Tantangan
Tulis fungsi atau program yang menggunakan golongan darah sebagai input dan menghasilkan dua daftar:
- daftar tipe yang tidak terurut yang dapat menerima donasi dari tipe input
- daftar tipe yang tidak berurutan yang dapat memberikan donasi pada tipe input
Jika Anda menulis suatu fungsi, maka tolong berikan juga program uji untuk memanggil fungsi itu dengan beberapa contoh, jadi saya dapat dengan mudah mengujinya. Dalam hal ini, program pengujian tidak akan menghitung skor Anda.
Memasukkan
Input harus berupa string yang mewakili tepat satu dari 8 jenis sel darah merah yang mungkin O−
O+
A−
A+
B−
B+
AB−
AB+
. Input dapat diberikan melalui metode normal (STDIN, arg baris perintah, argumen fungsi, dll).
Jika ada input lain yang diberikan maka program / fungsi harus mengembalikan output kosong atau melemparkan kesalahan. Biasanya pengecekan input yang ketat tidak bagus dalam pertanyaan kode-golf , tapi saya merasa diberi implikasi hidup-mati karena salah golongan darah sehingga saya harus menambahkan aturan ini.
Keluaran
Keluaran akan berupa dua daftar golongan darah yang dapat dibaca manusia dalam format apa pun yang sesuai untuk bahasa Anda. Dalam kasus khusus di mana salah satu daftar output berisi semua 8 jenis, daftar ini secara opsional dapat diganti dengan satu daftar item yang mengandung everyone
.
Output normal akan pergi ke salah satu tempat normal (STDOUT, pengembalian fungsi, dll).
Aturan lainnya
- Celah standar dilarang
- Anda dapat menggunakan pustaka pihak ke-3 apa pun yang sudah ada sebelumnya yang Anda butuhkan, asalkan tidak dirancang secara eksplisit untuk tujuan ini.
Contohnya
- Untuk input
AB-
, dua daftar keluaran adalah:{AB+, AB-}, {AB-, A-, B-, O-}
- Untuk input
AB+
, dua daftar keluaran adalah:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
atau{AB+}, {everyone}
Catatan pribadi: Silakan pertimbangkan untuk mendonorkan darah jika Anda mampu. Tanpa transfusi yang saya terima beberapa tahun yang lalu, saya mungkin tidak ada di sini hari ini, jadi saya merasa sangat berterima kasih kepada mereka yang mampu menyumbang!