Маловідомий факт про вампірів - це те, що вони повинні пити кров жертви, яка має сумісну групу крові донора. Матриця сумісності для вампірів така сама, як і для матриці донора / реципієнта еритроцитів . Це можна підсумувати за допомогою таблиці Американського Червоного Хреста
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-
Виклик
Напишіть функцію або програму, яка приймає групу крові як вхідну та виводить два списки:
- не упорядкований список типів, які можуть отримати пожертвування типу введення
- не упорядкований список типів, які можуть дати пожертвування типу введення
Якщо ви пишете функцію, то, будь ласка, надайте програму тестування для виклику цієї функції з кількома прикладами, щоб я міг її легко перевірити. У цьому випадку програма тестування не зараховуватиметься до вашого балу.
Вхідні дані
Вхід повинен бути рядком, що представляє саме один з 8 можливих типів еритроцитів O−
O+
A−
A+
B−
B+
AB−
AB+
. Введення даних може бути надано звичайними методами (STDIN, аргументи командного рядка, аргументи функцій тощо).
Якщо подано будь-який інший вхід, програма / функція повинна повернути порожній вихід або видати помилку. Зазвичай сувора перевірка вводу не є великою в питаннях кодового гольфу , але я відчував, що, маючи на увазі наслідки смертної смерті через те, що помиляються групи крові, я повинен додати це правило.
Вихідні дані
Вихідними даними будуть два людсько-читабельні списки груп крові в будь-якому форматі, який підходить для вашої мови. У особливих випадках, коли один із вихідних списків містить усі 8 типів, цей список може бути замінений на один список елементів, що містить everyone
.
Нормальний вихід буде в одному з звичайних місць (STDOUT, повернення функції тощо).
Інші правила
- Стандартні лазівки заборонені
- Ви можете використовувати всі наявні сторонні бібліотеки, які вам потрібні, до тих пір, поки вони не будуть спеціально розроблені для цієї мети.
Приклади
- Для введення
AB-
два списки вихідних даних будуть:{AB+, AB-}, {AB-, A-, B-, O-}
- Для введення
AB+
два списки вихідних даних будуть:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
або{AB+}, {everyone}
Особиста примітка: Будь ласка, розглядайте питання здачі крові, якщо зможете. Без переливання, яке я отримав кілька років тому, я може бути не сьогодні тут, тому я відчуваю дуже вдячність перед тими, хто здатний пожертвувати!