Uno (Parte 1)

Esta pregunta está inspirada en el popular juego de cartas Uno.

Escribe una función que reciba dos argumentos: (1) la mano actual de un jugador y (2) la carta actual boca arriba sobre la mesa, face. La función devolverá true si el jugador puede jugar una carta, o false si tiene que robar una carta del mazo.

Un jugador puede jugar una carta si se cumple alguna de estas condiciones:

  • Tiene una carta del mismo color que la carta boca arriba (face).
  • Tiene una carta con el mismo número que la carta boca arriba (face).
can_play(["yellow 3", "yellow 7", "blue 8", "red 9", "red 2"], "red 1") ➞ true
# Porque el jugador tiene dos cartas rojas y la carta boca arriba (face) es roja.

can_play(["yellow 3", "yellow 7"], "blue 7") ➞ true
# Porque el jugador tiene un 7 y la carta boca arriba (face) es un 7.

Ejemplos

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

Notas

  • Devuelve false si el jugador no tiene ninguna carta (un arreglo vacío).
  • Este mazo no contiene cartas especiales ni comodines.