Dalam Magic: the Gathering, para penyihir (dikenal sebagai "planeswalkers") saling bertarung dengan melemparkan mantra. Mantra mana biaya. Ada lima warna mana: Putih, Biru, Hitam, Merah, dan Hijau, masing-masing direpresentasikan sebagai {W}, {U}, {B}, {R}, dan {G}.
Biaya mantra sedikit lebih kompleks. Biaya dapat berupa kombinasi dari yang berikut:
- Satu atau lebih warna
- Satu atau lebih tidak berwarna, direpresentasikan sebagai {X}, di mana X adalah bilangan bulat positif
- Satu atau lebih hibrida, diwakili sebagai {Y / Z}, di mana Y dan Z adalah warna (diwakili oleh salah satu dari lima huruf) atau tidak berwarna, diwakili oleh bilangan bulat positif
Aturan berikut ini berlaku ketika mencoba membaca mantra:
- Warna dalam biaya harus dipenuhi oleh satu mana dari warna itu
- Biaya tak berwarna {X} dapat dipenuhi oleh X mana warna apa pun
- Biaya hibrida {Y / Z} dapat dipenuhi dengan memenuhi Y atau Z
- Perhatikan bahwa kawat gigi tidak bersarang
- Y dan Z bukan hibrida
Tulis sebuah program atau fungsi yang, mengingat kumpulan mana dan biaya, mencetak atau mengembalikan true (atau nilai kebenaran) jika dan hanya jika mana dalam kumpulan itu dapat memenuhi biaya, yang lain salah (atau nilai falsy).
Pool mana adalah string yang tidak kosong dari format:
Color1,Color2,Color3,...,Colorn-1,Colorn
Biaya adalah string format yang tidak kosong:
Cost1,Cost2,Cost3,...,Costn-1,Costn
Contohnya
Dalam format Pool Cost -> ExpectedOutput
(dengan spasi antara Pool dan Biaya):
{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