Trong Magic: the Gathering, các pháp sư (được gọi là "máy bay chiến đấu") chiến đấu với nhau bằng cách sử dụng phép thuật. Phép thuật tốn mana. Năm màu của mana tồn tại: Trắng, Xanh lam, Đen, Đỏ và Xanh lục, tương ứng là {W}, {U}, {B}, {R} và {G}.
Chi phí của một câu thần chú phức tạp hơn một chút. Chi phí có thể là bất kỳ sự kết hợp nào sau đây:
- Một hoặc nhiều màu
- Một hoặc nhiều màu không màu, được biểu thị là {X}, trong đó X là số nguyên dương
- Một hoặc nhiều giống lai, được biểu thị là {Y / Z}, trong đó Y và Z là một màu (được biểu thị bằng một trong năm chữ cái) hoặc không màu, được biểu thị bằng một số nguyên dương
Các quy tắc sau được áp dụng khi cố gắng sử dụng một câu thần chú:
- Một màu trong chi phí phải được thỏa mãn bởi một mana của màu đó
- Chi phí không màu {X} có thể được thỏa mãn bởi X mana của bất kỳ màu nào
- Một chi phí lai {Y / Z} có thể được thỏa mãn bằng cách thỏa mãn Y hoặc Z
- Lưu ý rằng niềng răng không được lồng
- Y và Z không lai
Viết chương trình hoặc hàm, được cung cấp một nhóm mana và chi phí, in hoặc trả về giá trị đúng (hoặc một số giá trị trung thực) nếu và chỉ khi mana trong nhóm đó có thể thỏa mãn chi phí, nếu không sai (hoặc một số giá trị giả).
Nhóm mana là một chuỗi không có định dạng:
Color1,Color2,Color3,...,Colorn-1,Colorn
Chi phí là một chuỗi không trống của định dạng:
Cost1,Cost2,Cost3,...,Costn-1,Costn
Ví dụ
Trong định dạng Pool Cost -> ExpectedOutput
(có khoảng cách giữa Pool và Chi phí):
{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