Pour plus de bonté MtG: Magic: The Gathering Combat with Abilities
Prémisse:
Dans Magic: the Gathering, vous lancez des sorts en payant leur coût de mana en engageant des terrains pour le montant requis. Ces terres peuvent produire l'une des cinq couleurs qui sont:
- Blanc (W)
- Bleu (U)
- Noir (B)
- Rouge (R)
- Vert (G)
Le coût est composé de deux parties: un nombre qui correspond à l'exigence de mana générique et une série de symboles représentant l'exigence de mana coloré. Le nombre est le coût de mana générique et peut utiliser n'importe quelle couleur de mana pour le satisfaire, par exemple (3)
peut être payé avec WGG
. Les symboles sont une exigence 1: 1 d'une couleur spécifique. Par exemple, WWUBR
il faudrait 2 manas blancs, 1 bleu, 1 noir et 1 rouge. La partie générique précédera toujours la partie colorée. Pour rappel, (0)
est un coût valable et doit être traité.
Vous pouvez avoir des coûts entièrement génériques, entièrement colorés ou les deux. Par exemple, la carte suivante a un coût de 4BB et est payée avec 4 mana de n'importe quelle couleur et 2 mana noir:
Les terrains de ce défi produiront chacun un mana. Cependant, nous considérerons les terrains qui peuvent produire plusieurs couleurs mais qui ne donnent toujours qu'un mana. Par exemple G
, produira un mana vert, WG
peut produire 1 blanc ou 1 vert.
Contribution:
Vous recevrez deux entrées, le coût d'une carte et une liste de terrains.
Le coût de la carte peut être soit une chaîne, soit un tuple contenant un nombre et une chaîne pour la partie colorée. S'il n'y a pas de partie générique, vous pouvez remplir la chaîne / tuple avec un 0.
La liste des terres sera une liste de chaînes où chacune correspond à ce qu'une terre donnée peut produire. Cette liste peut être vide (vous n'avez pas de terrain). Vous pouvez également prendre cela comme une liste d'entiers utilisant une logique de masque de bits, mais publier votre schéma si vous le faites. L'ordre dépend également de vous si cela est important, sinon il sera supposé dans l' WUBRG
ordre.
#Example input formats
"4BB", ("WG","B","B") #
(4,"BB"), (7,3,3) #Both should return falsy
Production:
Une truthy
valeur si vous pouvez payer avec succès le coût étant donné vos terres et une falsey
valeur si vous ne le pouvez pas.
Règles:
- Vous aurez la garantie d'une entrée valide
- Le mana sera supposé être toujours dans l'ordre "WUBRG". Si vous souhaitez un ordre différent, indiquez-le dans votre réponse.
- Les couleurs seront toujours regroupées dans le coût, par exemple "WWUBBRG"
- L'entrée utilisera tout en majuscules ou en minuscules, selon votre choix.
- Vous devriez être capable de gérer des regex
127[WUBRG]{127}
et 254 terrains. - Failles standard interdites
- Ceci est le code-golf , la réponse la plus courte par langue gagne
Exemples:
"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
la source
Réponses:
JavaScript (ES6), 91 octets
Prend l'entrée comme
(cost)(lands)
:BGRUW
Essayez-le en ligne!
Commenté
la source
Python 2 ,
131129 octetsEssayez-le en ligne!
la source
Rétine , 60 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication:
Convertissez le mana générique en unaire. Cela utilise l'
_
art.Faites correspondre toutes les lignes après la première, c'est-à-dire la liste des terrains. (Cela correspondrait normalement à la toute fin de l'entrée, mais le lookbehind empêche cela.)
Capturez le numéro de ligne indexé 1 dans
$#1
.Remplacez chaque terrain par une expression régulière qui capture les coûts correspondant à ce terrain ou aux coûts génériques, mais une seule fois.
Joignez les expressions rationnelles résultantes avec
|
s.Enveloppez le regex
^(
et)*\n
(je n'arrive pas à insérer un¶
ici).Comptez le nombre de correspondances de cette expression régulière sur la valeur actuelle.
Exemple: Pour le cas de
1BB¶WB¶WB¶WG
l'expression régulière générée est:qui
_BB¶WB¶WB¶WG
correspond au besoin.la source
WUBRG, WUBRG
devrait revenirtrue
?WUBRG
.Gelée , 21 octets
Essayez-le en ligne!
Les sorties
Le format d'entrée est ce qui rend vraiment cela difficile pour Jelly. Parce que
Ṫ
etḢ
modifier le tableau, nous devons utiliser©
et®
en plus. Avec 3 entrées séparées, ce serait 18 octets . (Bien que je suis sûr qu'il y a une solution d'environ 14 octets qui attend d'être publiée par l'un des cerveaux de Jelly.)la source
Pyth , 25 octets
Essayez-le en ligne!
Si Pyth avait une fonction "produit cartésien de tableau" comme celle de Jelly
Œp
, cela battrait facilement ma solution Jelly. Actuellement, cela se fait parusM*GHQ]k
.la source
Perl 6 ,
5646 octetsEssayez-le en ligne!
Fonction curry. Prend l'entrée comme
(@lands)($generic_cost, $colored_costs)
avec un 0 explicite pour le coût générique. L'idée de base est d'introduire un nouveau symbole1
représentant le mana générique et d'utiliser des sacs Perl 6 (multisets) pour vérifier s'il est possible d'obtenir le mana requis des terrains.Explication
la source
Haskell , 94 octets
Essayez-le en ligne!
Nous comptons sur le fait que toutes les couleurs seront données dans le même ordre dans le coût et dans la liste foncière. D'abord, nous exploitons les terrains donnant le mana coloré requis et après cela vérifions simplement que nous avons encore suffisamment de terrains pour payer le coût incolore.
la source