En Magic: the Gathering, los magos (conocidos como "planeswalkers") luchan entre sí lanzando hechizos. Los hechizos cuestan maná. Existen cinco colores de maná: blanco, azul, negro, rojo y verde, representados como {W}, {U}, {B}, {R} y {G}, respectivamente.
El costo de un hechizo es un poco más complejo. El costo puede ser cualquier combinación de lo siguiente:
- Uno o mas colores
- Uno o más incoloros, representados como {X}, donde X es un entero positivo
- Uno o más híbridos, representados como {Y / Z}, donde Y y Z son de color (representado por una de las cinco letras) o incoloro, representado por un número entero positivo
Las siguientes reglas se aplican al intentar lanzar un hechizo:
- Un color en un costo debe ser satisfecho por un maná de ese color
- Un coste incoloro {X} puede ser satisfecho por X mana de cualquier color
- Un costo híbrido {Y / Z} puede satisfacerse satisfaciendo Y o Z
- Tenga en cuenta que las llaves no están anidadas
- Y y Z no son híbridos
Escriba un programa o función que, dado un grupo de maná y un costo, imprima o devuelva verdadero (o algún valor verdadero) si y solo si el maná en ese grupo puede satisfacer el costo, de lo contrario falso (o algún valor falso).
Un grupo de maná es una cadena no vacía del formato:
Color1,Color2,Color3,...,Colorn-1,Colorn
Un costo es una cadena no vacía del formato:
Cost1,Cost2,Cost3,...,Costn-1,Costn
Ejemplos
En el formato Pool Cost -> ExpectedOutput
(con un espacio entre Pool y Cost):
{R},{R},{G},{B},{R} {4},{R} -> True
{G},{G},{G},{G},{W},{W},{W} {2/W},{2/U},{2/B},{2/R},{2/G} -> False
{G},{G},{R} {R/G},{G/B},{B/R} -> True
{R},{R},{R},{G} {1},{G},{2/G}-> True
{R} {R},{R},{R},{R},{R} -> False
{W},{R},{R} {2/W},{W/B} -> True
{U},{U} {1} -> True
{W},{R},{G} {1},{2} -> True