У Magic: The Gathering, маги (відомі як "самоскиди") воюють один з одним, кидаючи заклинання. Заклинання вартості мани. Існує п’ять кольорів мани: Білий, Синій, Чорний, Червоний та Зелений, представлені як {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
(з пробілом між пулом і вартістю):
{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