Một sự thật ít được biết đến về ma cà rồng là họ phải uống máu nạn nhân có nhóm máu người hiến tương thích. Ma trận tương thích cho ma cà rồng giống như ma trận người cho / người nhận hồng cầu thông thường . Điều này có thể được tóm tắt bằng bảng Chữ thập đỏ Mỹ sau đây
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-
Thử thách
Viết hàm hoặc chương trình lấy nhóm máu làm đầu vào và xuất ra hai danh sách:
- danh sách các loại có thể nhận được sự đóng góp của loại đầu vào
- danh sách các loại không được sắp xếp có thể đóng góp cho loại đầu vào
Nếu bạn viết một hàm, thì vui lòng cung cấp một chương trình kiểm tra để gọi hàm đó với một vài ví dụ, để tôi có thể dễ dàng kiểm tra nó. Trong trường hợp này, chương trình kiểm tra sẽ không được tính vào điểm số của bạn.
Đầu vào
Đầu vào phải là một chuỗi đại diện chính xác cho một trong 8 loại tế bào hồng cầu có thể O−
O+
A−
A+
B−
B+
AB−
AB+
. Đầu vào có thể được cung cấp thông qua các phương thức bình thường (STDIN, đối số dòng lệnh, đối số hàm, v.v.).
Nếu bất kỳ đầu vào nào khác được đưa ra thì chương trình / hàm phải trả lại đầu ra trống hoặc đưa ra lỗi. Thông thường kiểm tra đầu vào nghiêm ngặt không phải là tuyệt vời trong các câu hỏi về golf-code , nhưng tôi cảm thấy có liên quan đến sự sống chết khi nhận sai nhóm máu mà tôi nên thêm quy tắc này.
Đầu ra
Đầu ra sẽ là hai danh sách các nhóm máu có thể đọc được ở bất kỳ định dạng nào phù hợp với ngôn ngữ của bạn. Trong các trường hợp đặc biệt khi một trong các danh sách đầu ra chứa tất cả 8 loại, danh sách này có thể tùy chọn được thay thế bằng một danh sách mục duy nhất có chứa everyone
.
Đầu ra bình thường sẽ đi đến một trong những nơi bình thường (STDOUT, trả về hàm, v.v.).
Các quy tắc khác
- Sơ hở tiêu chuẩn bị cấm
- Bạn có thể sử dụng bất kỳ thư viện bên thứ 3 nào hiện có mà bạn cần, miễn là chúng không được thiết kế rõ ràng cho mục đích này.
Ví dụ
- Đối với đầu vào
AB-
, hai danh sách đầu ra sẽ là:{AB+, AB-}, {AB-, A-, B-, O-}
- Đối với đầu vào
AB+
, hai danh sách đầu ra sẽ là:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
hoặc{AB+}, {everyone}
Lưu ý cá nhân: Vui lòng xem xét hiến máu nếu bạn có thể. Nếu không được truyền máu cách đây vài năm, tôi có thể không ở đây hôm nay, vì vậy tôi cảm thấy rất biết ơn những người có thể quyên góp!