Tipos de sangue

Published by sigma144 in

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:

  • Uma pessoa com o antígeno A só pode doar sangue para outra pessoa que tenha o antígeno A.
  • Uma pessoa com o antígeno B só pode doar sangue para outra pessoa que tenha o antígeno B.
  • Uma pessoa com o fator Rh só pode doar sangue para outra pessoa que tenha o fator Rh.
  • Uma pessoa sem nenhum dos fatores acima (O-) pode doar sangue para qualquer pessoa.

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.

Exemplos

can_give_blood("O+", "A+") ➞ True

can_give_blood("A-", "B-") ➞ False

can_give_blood("A-", "AB+") ➞ True

Notas

  • Todas as letras são maiúsculas.
  • Cada tipo sanguíneo será uma das seguintes strings: "O+", "O-", "A+", "A-", "B+", "B-", "AB+", "AB-".