Quando uma pessoa recebe uma transfusão de sangue, é essencial garantir que o tipo sanguíneo do doador seja compatível com o tipo sanguíneo do receptor. Receber um tipo sanguíneo incompatível com o seu pode ser potencialmente fatal, por isso os bancos de sangue sempre registram o tipo de sangue recebido dos doadores para garantir uma transfusão segura.
Os tipos sanguíneos recebem seus nomes de acordo com três fatores: a presença do antígeno A, a presença do antígeno B e a presença do fator Rh. Se o antígeno A estiver presente, o tipo sanguíneo incluirá a letra "A". Se o antígeno B estiver presente, o tipo sanguíneo incluirá a letra "B". E, se o fator Rh estiver presente, o tipo sanguíneo terminará com "+"; caso contrário, terminará com "-". Se nem o antígeno A nem o antígeno B estiverem presentes, o tipo sanguíneo incluirá a letra "O".
Por exemplo, uma pessoa com apenas o antígeno A teria o tipo sanguíneo "A-". Uma pessoa com os antígenos A e B e o fator Rh teria o tipo sanguíneo "AB+", e uma pessoa com apenas o fator Rh teria o tipo sanguíneo "O+".
As regras para doar e receber sangue são as seguintes:
Escreva uma função que receba como strings os tipos sanguíneos do doador e do receptor e retorne se o doador pode doar sangue ao receptor com segurança, de acordo com as regras acima.
can_give_blood("O+", "A+") ➞ true
can_give_blood("A-", "B-") ➞ false
can_give_blood("A-", "AB+") ➞ true