In Magic: the Gathering kämpfen Magier (bekannt als "Planeswalker") miteinander, indem sie Zauber wirken. Zauber kosten Mana. Es gibt fünf Manafarben: Weiß, Blau, Schwarz, Rot und Grün, dargestellt als {W}, {U}, {B}, {R} und {G}.
Die Kosten eines Zaubers sind etwas komplexer. Die Kosten können eine beliebige Kombination der folgenden sein:
- Eine oder mehrere Farben
- Eine oder mehrere farblose Zahlen, dargestellt als {X}, wobei X eine positive ganze Zahl ist
- Eine oder mehrere Hybriden, dargestellt als {Y / Z}, wobei Y und Z entweder eine Farbe (dargestellt durch einen der fünf Buchstaben) oder farblos sind, dargestellt durch eine positive ganze Zahl
Die folgenden Regeln gelten, wenn Sie versuchen, einen Zauber zu wirken:
- Eine Farbe in einem Preis muss durch ein Mana dieser Farbe befriedigt werden
- Ein farbloses Cost {X} kann durch X Mana einer beliebigen Farbe gedeckt werden
- Hybridkosten {Y / Z} können erfüllt werden, indem entweder Y oder Z erfüllt werden
- Beachten Sie, dass geschachtelte Klammern nicht vorhanden sind
- Y und Z sind nicht hybrid
Schreiben Sie ein Programm oder eine Funktion, die bei gegebenem Manapool und gegebenen Kosten true (oder einen gewissen Wahrheitswert) ausgibt oder zurückgibt, wenn das Mana in diesem Pool die Kosten decken kann, andernfalls false (oder einen gewissen falschen Wert).
Ein Manavorrat ist eine nicht leere Zeichenfolge des Formats:
Color1,Color2,Color3,...,Colorn-1,Colorn
Ein Kostenwert ist eine nicht leere Zeichenfolge des Formats:
Cost1,Cost2,Cost3,...,Costn-1,Costn
Beispiele
Im Format Pool Cost -> ExpectedOutput
(mit einem Leerzeichen zwischen Pool und Kosten):
{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