В Magic: The Gathering, маги (известные как "planeswalker") сражаются друг с другом, используя заклинания. Заклинания стоят маны. Существует пять цветов маны: белый, синий, черный, красный и зеленый, представленные как {W}, {U}, {B}, {R} и {G} соответственно.
Стоимость заклинания немного сложнее. Стоимость может быть любой комбинацией следующего:
- Один или несколько цветов
- Один или несколько бесцветных, представленных как {X}, где X - положительное целое число
- Одна или несколько гибридов, представленных как {Y / Z}, где Y и Z являются либо цветом (представленным одной из пяти букв), либо бесцветным, представленным положительным целым числом
Следующие правила применяются при попытке разыграть заклинание:
- Цвет в стоимости должен быть удовлетворен одной маной этого цвета
- Бесцветная стоимость {X} может быть удовлетворена за счет X маны любого цвета
- Гибридная стоимость {Y / Z} может быть удовлетворена путем удовлетворения либо Y, либо Z
- Обратите внимание, что фигурные скобки не являются вложенными
- Y и Z не гибридные
Напишите программу или функцию, которая, учитывая пул маны и стоимость, печатает или возвращает истину (или некоторое истинное значение) тогда и только тогда, когда мана в этом пуле может удовлетворить стоимость, иначе ложь (или некоторое ложное значение).
Пул маны - это непустая строка в формате:
Color1,Color2,Color3,...,Colorn-1,Colorn
Стоимость - это непустая строка в формате:
Cost1,Cost2,Cost3,...,Costn-1,Costn
Примеры
В формате Pool Cost -> ExpectedOutput
(с пробелом между Pool и 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