Uno (Parte 1)

Esta questão foi inspirada no popular jogo de cartas Uno.

Escreva uma função que receba dois argumentos: (1) a mão atual de um jogador e (2) a carta que está virada para cima na mesa (face). A função deverá retornar True se o jogador puder fazer uma jogada, ou False se tiver que comprar uma carta do baralho.

Um jogador pode fazer uma jogada se pelo menos uma destas condições for atendida:

  • Ele tem uma carta da mesma cor que a carta virada para cima (face).
  • Ele tem uma carta com o mesmo número que a carta virada para cima (face).
can_play(["yellow 3", "yellow 7", "blue 8", "red 9", "red 2"], "red 1") ➞ True
# Isso acontece porque o jogador tem duas cartas vermelhas e a carta virada para cima (face) é vermelha.

can_play(["yellow 3", "yellow 7"], "blue 7") ➞ True
# Isso acontece porque o jogador tem um 7 e a carta virada para cima (face) é um 7.

Exemplos

can_play(["yellow 3", "yellow 5", "red 8"], "red 2") ➞ True

can_play(["yellow 3", "yellow 5", "red 8"], "blue 5") ➞ True

can_play(["yellow 3", "blue 5", "red 8", "red 9"], "green 4") ➞ False

can_play(["yellow 3", "red 8"], "green 2") ➞ False

Observações

  • Retorne False se o jogador não tiver nenhuma carta na mão (uma lista vazia).
  • Este baralho não contém cartas especiais nem curingas.