जादू: द गैदरिंग, भुगतान के लिए मंत्र


9

अधिक MtG-goodness के लिए: जादू: क्षमताओं के साथ सभा संयोजन

परिसर:

मैजिक में: सभा, आप आवश्यक राशि के लिए भूमि का दोहन करके उनकी मन लागत का भुगतान करके मंत्र देते हैं। ये भूमि पांच रंगों में से एक का उत्पादन कर सकती हैं जो हैं:

  • सफेद (W)
  • नीला (U)
  • ब्लैक (B)
  • रेड (R)
  • हरा (G)

लागत दो भागों से बना है: एक संख्या जो सामान्य मान आवश्यकता है, और रंगीन मान आवश्यकता का प्रतीक प्रतीकों की एक श्रृंखला है। संख्या सामान्य मान लागत है और इसे पूरा करने के लिए मान के किसी भी रंग का उपयोग कर सकते हैं, जैसे के (3)साथ भुगतान किया जा सकता है WGG। प्रतीक एक विशिष्ट रंग की 1: 1 आवश्यकता है। उदाहरण के WWUBRलिए 2 सफेद मन, 1 नीला, 1 काला और 1 लाल की आवश्यकता होगी। जेनेरिक हिस्सा हमेशा रंगीन हिस्से से पहले आएगा। एक अनुस्मारक के रूप में, (0)एक वैध लागत है और इसे संभाला जाना चाहिए।

आपके पास ऐसी लागतें हो सकती हैं जो पूरी तरह से सामान्य हैं, या पूरी तरह से रंगीन हैं, या दोनों हैं। उदाहरण के लिए, निम्न कार्ड में 4BB की लागत है और जो कुछ भी रंगीन मन और 2 काले मन के साथ भुगतान किया जाता है:

उदाहरण कार्ड

इस चुनौती में भूमि प्रत्येक एक मैना का उत्पादन करेगी। हालांकि, हम उन जमीनों पर विचार करेंगे जो कई रंगों का उत्पादन कर सकती हैं लेकिन फिर भी केवल 1 मैना की उपज होती है। जैसे Gहरे रंग का मैना उत्पन्न करेगा, WG1 सफेद या 1 हरा उत्पादन कर सकता है।

इनपुट:

आपको दो इनपुट, कार्ड की लागत और भूमि की एक सूची दी जाएगी।

कार्ड की लागत या तो एक स्ट्रिंग हो सकती है, या एक ट्यूपल हो सकती है जिसमें रंगीन भाग के लिए एक संख्या और एक स्ट्रिंग होती है। यदि कोई सामान्य भाग नहीं है, तो आप 0 के साथ स्ट्रिंग / ट्यूपल को पैड कर सकते हैं।

भूमि सूची उन तारों की सूची होगी जहां हर एक वह है जो दी गई भूमि का उत्पादन कर सकता है। यह सूची खाली हो सकती है (आपके पास कोई भूमि नहीं है)। आप इसे बिट-मास्क लॉजिक का उपयोग करने वाले किलों की सूची के रूप में भी ले सकते हैं लेकिन यदि आप करते हैं तो अपनी योजना पोस्ट करें। यदि आदेश मायने रखता है तो आदेश भी आपके ऊपर है, अन्यथा इसे WUBRGक्रम में लिया जाएगा ।

#Example input formats
"4BB", ("WG","B","B") #
(4,"BB"), (7,3,3)     #Both should return falsy

आउटपुट:

एक truthyमान यदि आप अपनी ज़मीनों पर दी गई लागत का सफलतापूर्वक भुगतान कर सकते हैं और falseyयदि आप नहीं कर सकते हैं तो एक मूल्य।

नियम:

  • आपको मान्य इनपुट की गारंटी दी जाएगी
  • मान को "WUBRG" क्रम में हमेशा माना जाएगा। यदि आप एक अलग आदेश चाहते हैं, तो अपने उत्तर में बताएं।
  • रंगों को हमेशा लागत में वर्गीकृत किया जाएगा, जैसे "WWUBBRG"
  • इनपुट या तो सभी अपरकेस या सभी लोअरकेस, आपकी पसंद का उपयोग करेगा।
  • आपको रेगेक्स 127[WUBRG]{127}और 254 भूमि को संभालने में सक्षम होना चाहिए ।
  • मानक खामियों को मना किया
  • ये है , प्रति भाषा जीत का सबसे छोटा जवाब

उदाहरण:

"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

मुझे खुशी है कि एमटीजी चुनौती है। +1
निक्को ख्रेसना

यह भी सबसे अच्छा उल्लेख करने के लिए कि लागत में हमेशा जेनेरिक मन की आवश्यकता (संख्या) पहले स्थान पर होगी, उसके बाद रंगीन मैना आवश्यकताओं (डब्ल्यू / यू / बी / आर / जी)
निक्को ख्रेसना

@NikkoKhresna यह स्पष्ट किया गया है, धन्यवाद।
Veskah


@ एक बंदूक का बेटा इग्नू। मुझे लगता है कि यह इस मायने में अलग है कि आपको केवल मैना पूल दिए जाने की तुलना में अपनी भूमि को पार्स करने की आवश्यकता है।
Veskah

जवाबों:


3

जावास्क्रिप्ट (ईएस 6), 91 बाइट्स

इनपुट के रूप में लेता है (cost)(lands):

  • सीरोंटीBGRUWक्रम में वर्णों की एक सूची है , जब यह है, तब भी सामान्य भाग के साथ उपसर्ग0
  • एलnरों तार की एक सूची है।
a=>g=([c,...r],n=0,s=e='')=>[...n+s].sort()+e==a|(c&&[e,e,...c].some((c,i)=>g(r,n+!i,s+c)))

इसे ऑनलाइन आज़माएं!

टिप्पणी की गई

a =>                        // main function taking the array a[] describing the cost
  g = (                     // g = recursive function taking:
    [c, ...r],              //   c = next land string; r[] = remaining land strings
    n = 0,                  //   n = generic mana, initialized to 0
    s = e = ''              //   s = generated cost string, initialized to e = empty string
  ) =>                      //
    [...n + s].sort() + e   // prepend n to s, split, sort and force coercion to a string
    == a | (                // if this is matching a[], the test is successful
      c &&                  // if c is defined:
      [                     //   try the following recursive calls:
        e,                  //     - increment n and append nothing to s
        e,                  //     - do nothing
        ...c                //     - leave n unchanged and append a character to s
      ].some((c, i) =>      //   for each c at position i in the above array:
        g(r, n + !i, s + c) //     process the recursive call
      )                     //   end of some()
    )                       // end of the recursive part


2

रेटिना , 60 बाइट्स

\d+
*
~["^("|'|]")*\n"1,L$`(?<=(^|.*¶)+).*
(?($#1)^|([_$&]))

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण के मामले शामिल हैं। स्पष्टीकरण:

\d+
*

जेनेरिक मन को यूनिरी में बदलें। यह दोहराया _एस का उपयोग करता है ।

1,L`.*

पहले के बाद की सभी पंक्तियों का मिलान करें, अर्थात भूमि की सूची। (यह आम तौर पर इनपुट के बहुत अंत में फिर से मेल खाता है, लेकिन लुकहैंड इसे रोकता है।)

(?<=(^|.*¶)+)

1-अनुक्रमित पंक्ति संख्या को कैप्चर करें $#1

$
(?($#1)^|([_$&]))

प्रत्येक भूमि को एक रेगीक्स के साथ बदलें जो उस भूमि या सामान्य लागत से मेल खाते लागतों को कैप्चर करता है, लेकिन केवल एक बार।

|'|

|एस के साथ परिणामी रेगेक्स में शामिल हों ।

["^("]")*\n"

में regex लपेटें ^(और )*\n(मैं एक डालने के लिए नहीं कर पा रहे यहाँ)।

~

वर्तमान मूल्य पर उस रेगेक्स के मैचों की संख्या की गणना करें।

उदाहरण: 1BB¶WB¶WB¶WGउत्पन्न रेगेक्स के मामले के लिए है:

^((?(2)^|([_WB]))|(?(3)^|([_WB]))|(?(4)^|([_WG])))*\n

जो _BB¶WB¶WB¶WGआवश्यक के रूप में मेल खाता है।


WUBRG, WUBRGलौटना चाहिए true?
निक्को खरेसना

@NikkoKhresna नहीं, प्रत्येक भूमि का उपयोग केवल एक बार किया जा सकता है; आप के लिए भुगतान करने में सक्षम होने के लिए कम से कम 5 भूमि की जरूरत है WUBRG
नील

ओह कि 5 रंग को संदर्भित करता है मेरा बुरा land..okay
निक्को Khresna

1

जेली , 21 बाइट्स

Œpµ®œ-)Ạ
L<⁴Ṫ©L+Ḣ¤ȯçṆ

इसे ऑनलाइन आज़माएं!

आउटपुट

इनपुट प्रारूप वह है जो वास्तव में जेली के लिए यह कठिन बनाता है। क्योंकि और सरणी संशोधित करने, हम उपयोग करने की जरूरत है ©और ®इसके अलावा में। 3 अलग इनपुट्स के साथ यह 18 बाइट्स होगा । (हालांकि मुझे यकीन है कि जेली मास्टरमाइंड में से एक द्वारा पोस्ट किए जाने की प्रतीक्षा में 14 या बाइट समाधान है।)


1

पायथ , 25 बाइट्स

&glQ+hAElH}k.-LHusM*GHQ]k

इसे ऑनलाइन आज़माएं!

अगर पेली के पास जेली की तरह "सरणी का कार्टेशियन उत्पाद" फ़ंक्शन Œpहोता है, तो यह आसानी से मेरे जेली समाधान को हरा देगा। वर्तमान में द्वारा किया जाता है कि usM*GHQ]k


1

पर्ल 6 , 56 46 बाइट्स

{(1 x*~*).comb.Bagany [X] $(1 X~$_)>>.comb}

इसे ऑनलाइन आज़माएं!

करी समारोह। (@lands)($generic_cost, $colored_costs)जेनेरिक लागत के लिए एक स्पष्ट 0 के साथ इनपुट लेता है । मूल विचार यह है कि 1जेनेरिक मैना का प्रतिनिधित्व करने वाले एक नए प्रतीक को पेश किया जाए और यह जांचने के लिए कि क्या जमीन से आवश्यक मैना प्राप्त करना संभव है, पर्ल 6 बैग्स (मल्टीसेट्स) का उपयोग करें।

व्याख्या

{ ... }  # Anonymous block returning WhateverCode
  # Preprocess cost
  1 x*    # '1' for generic mana repeated times generic cost
      ~*  # Concat with colored costs
 (      ).comb  # Split into characters
              .Bag  # Convert to a Bag (multiset)
                             # Preprocess lands
                             1 X~$_   # Prepend '1' to each land
                           $(      )  # Itemize to make 1-element lists work
                                    >>.comb  # Split each into chars
                       [X]  # Cartesian product, yields all possible ways
                            # to select colors from lands
                  # Finally check if the cost Bag is a subset of any possible
                  # color selection (which are implicitly converted to Bags)
                  any

1

हास्केल , 94 बाइट्स

x#[]=[]
x#(s:t)|x`elem`s=t|0<1=s:x#t
(e,[])?s=length s>=e
(e,x:y)?s|x#s==s=0>1|0<1=(e,y)?(x#s)

इसे ऑनलाइन आज़माएं!

हम इस तथ्य पर भरोसा करते हैं कि सभी रंगों को लागत और भूमि सूची में एक ही क्रम में दिया जाएगा। पहले हम आवश्यक रंगीन मैना देने वाली भूमि पर टैप करते हैं और उसके बाद बस यह जाँचते हैं कि रंगहीन लागत का भुगतान करने के लिए हमारे पास अभी भी पर्याप्त भूमि है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.