Para mais bondade no MtG: Magic: The Gathering Combat with Habilidades
Premissa:
Em Magic: the Gathering, você lança feitiços pagando seu custo de mana tocando em terrenos pelo valor necessário. Essas terras podem produzir uma das cinco cores que são:
- Branco (W)
- Azul (U)
- Preto (B)
- Vermelho (R)
- Verde (G)
O custo é composto de duas partes: um número que é o requisito genérico de mana e uma série de símbolos que representam o requisito de mana colorido. O número é o custo genérico de mana e pode usar qualquer cor de mana para satisfazê-lo, por exemplo, (3)
pode ser pago com ele WGG
. Os símbolos são um requisito 1: 1 de uma cor específica. por exemplo WWUBR
, exigiria 2 mana branco, 1 azul, 1 preto e 1 vermelho. A parte genérica sempre será anterior à parte colorida. Como lembrete, (0)
é um custo válido e deve ser tratado.
Você pode ter custos que são totalmente genéricos, ou totalmente coloridos, ou ambos. Por exemplo, o cartão a seguir tem um custo de 4BB e é pago com 4 de qualquer mana colorido e 2 mana preto:
As terras deste desafio produzirão uma mana. No entanto, consideraremos terrenos que podem produzir várias cores, mas que ainda produzem apenas 1 mana. Por exemplo G
, produzirá uma mana verde, WG
pode produzir 1 branco ou 1 verde.
Entrada:
Você receberá duas entradas, o custo de um cartão e uma lista de terrenos.
O custo do cartão pode ser uma sequência ou uma tupla contendo um número e uma sequência para a parte colorida. Se não houver uma peça genérica, você pode preencher a string / tupla com um 0.
A lista de terrenos será uma lista de cadeias de caracteres onde cada um é o que um determinado terreno pode produzir. Esta lista pode estar vazia (você não tem terrenos). Você também pode considerar isso como uma lista de entradas usando a lógica de máscara de bits, mas postar seu esquema, se o fizer. O pedido também depende de você, se for importante, caso contrário, será assumido em WUBRG
ordem.
#Example input formats
"4BB", ("WG","B","B") #
(4,"BB"), (7,3,3) #Both should return falsy
Resultado:
Um truthy
valor se você puder pagar com sucesso o custo dado suas terras e um falsey
valor se você não puder.
Regras:
- Você terá entrada válida garantida
- Presume-se que a mana esteja sempre na ordem "WUBRG". Se você deseja uma ordem diferente, informe-o na sua resposta.
- As cores sempre serão agrupadas no custo, por exemplo, "WWUBBRG"
- A entrada usará todas as maiúsculas ou minúsculas, sua escolha.
- Você deve ser capaz de lidar com regex
127[WUBRG]{127}
e 254 terrenos. - Lacunas padrão proibidas
- Isso é código-golfe , a resposta mais curta por idioma ganha
Exemplos:
"0", ("") => 1
"1BB", ("WG","B","B") => 1
"BB", ("WG","B","B") => 1
"WB", ("WG","B","B") => 1
"1UB", ("W","U","B") => 1
"1BB", ("WB","WB","WG") => 1
"1", ("WG","B","B") => 1
"1BB", ("WGR","WB","WB") => 1
"WUBRG", ("W","U","B","R","G") => 1
"1WWUBB", ("W","WG","U","B","B","R") => 1
"10BB", ("WGR","WB","WB","B","B","B","B","B","B","B","B","B") => 1
"R", ("") => 0
"4", ("WG","B","B") => 0
"1BB", ("WG","WB") => 0
"1UB", ("WG","W","UB") => 0
"1UBR", ("W","WG","UBR") => 0
"WUBRG", ("WUBRG") => 0
"1WWUBB", ("W","WG","U","B","B") => 0
"10UU", ("WGR","WB","WB","B","B","B","B","B","B","B","B","B") => 0