Vampirlerle ilgili az bilinen bir gerçek, uyumlu bir donör kanı tipine sahip olan kurbanın kanını içmeleri gerektiğidir. Vampirler için uyumluluk matrisi, normal kırmızı kan hücresi verici / alıcı matrisi ile aynıdır . Bu, aşağıdaki Amerikan Kızıl Haç tablosu ile özetlenebilir.
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-
Meydan okuma
Giriş olarak kan grubunu alan ve iki liste çıktısı alan bir işlev veya program yazın:
- girdi türünden bağış alabilecek sıralanmamış tür listesi
- giriş türüne bağış verebilecek sıralanmamış tür listesi
Bir işlev yazarsanız, lütfen bu işlevi birkaç örnekle çağırmak için bir test programı da sağlayın, böylece kolayca test edebilirim. Bu durumda, test programı puanınıza sayılmaz.
Giriş
Girdi, 8 olası kırmızı kan hücresi tipinden tam olarak birini temsil eden bir dize olmalıdır O−
O+
A−
A+
B−
B+
AB−
AB+
. Giriş normal yöntemlerle (STDIN, komut satırı argümanları, fonksiyon argümanları vb.) Verilebilir.
Başka bir giriş yapılırsa, program / fonksiyon boş çıktı döndürmeli veya bir hata atmalıdır. Normalde katı giriş kontrolü, kod-golf sorularında pek iyi değildir, ancak kan kurallarının yanlış olmasının ölümle sonuçlanmasının bu kuralı eklemem gerektiğini düşündüğümü hissettim.
Çıktı
Çıktı, diliniz için uygun olan formatta, insan tarafından okunabilen iki kan grubu listesi olacaktır. Çıktı listesinden birinin 8 türün tümünü içerdiği özel durumlarda, bu liste isteğe bağlı olarak içeren tek bir öğe listesi ile değiştirilebilir everyone
.
Normal çıkış normal yerlerden birine gider (STDOUT, fonksiyon dönüşü, vb.).
Diğer kurallar
- Standart boşluklar yasaklandı
- İhtiyacınız olan herhangi bir 3. parti kütüphaneyi, bu amaç için açıkça tasarlanmadıkça kullanabilirsiniz.
Örnekler
- Giriş
AB-
için iki çıkış listesi şöyle olacaktır:{AB+, AB-}, {AB-, A-, B-, O-}
- Giriş
AB+
için iki çıkış listesi şöyle olabilir:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
veya{AB+}, {everyone}
Kişisel not: Mümkünse, lütfen kan bağışı yapmayı düşünün. Birkaç yıl önce aldığım transfüzyon olmadan bugün burada olamayabilirim, bu yüzden bağış yapabilenlere minnettarım!