लैंगफोर्ड तार


11

चुनौती का वर्णन

एक लैंगफोर्ड स्ट्रिंग आदेश के Nरूप में निम्न प्रकार परिभाषित किया गया है:

  • स्ट्रिंग की लंबाई के बराबर है 2*N,
  • स्ट्रिंग में Nअंग्रेजी वर्णमाला के पहले अक्षर होते हैं , प्रत्येक अक्षर दो बार दिखाई देता है,
  • एक ही पत्र की एक जोड़ी के लिए, देखते हैं Mउन दोनों के बीच पत्र, जहां Mवर्णमाला में है कि पत्र की स्थिति है ( A = 1, B = 2, ..., Z = 26)।

उदाहरण के लिए, ऑर्डर के केवल दो संभावित लैंगफोर्ड तार 3हैं BCABACऔर CABACB। जैसा कि आप देख सकते हैं, इन दोनों तारों में Aदो अक्षरों के बीच एक अक्षर है , दो अक्षरों के बीच Bऔर तीन अक्षरों के बीच एक अक्षर है C। एक सकारात्मक पूर्णांक को देखते हुए N, ऑर्डर के सभी लैंगफ़ोर्ड स्ट्रिंग्स को आउटपुट करें N(किसी भी उचित प्रारूप में: उन्हें एक एक करके एक नई लाइन द्वारा अलग करें, एक सूची / सरणी लौटाएं ...)।

नमूना इनपुट / आउटपुट

3: [CABACB, BCABAC]
4: [DACABDCB, BCDBACAD]
5: # no output #
7: [GCFBECBDGFEADA, GBFCBDECGFDAEA, GBDFBCEDGCFAEA, GCAFACDEGBFDBE, GADAFCEDGCBFEB, GACAFDCEGBDFBE, GDAEAFDCGEBCFB, GBDEBFCDGECAFA, EGBFCBEDCGFADA, CGDFCBEDBGFAEA, EGDAFAEDCGBFCB, EGBCFBECDGAFAD, AGABFDBECGDFCE, EGADAFECDGBCFB, AGABEFBCDGECFD, BGDBCEFDCGAEAF, FBGDBCEFDCGAEA, BFGBAEADFCGEDC, CFGACADEFBGDBE, EAGAFBEDBCGFDC, BCGBFCEADAGFED, DAGAFDBECBGFCE, EBGCBFECDAGAFD, CEGDCFBEDBGAFA, CEGBCFBEDAGAFD, BDGBCFDECAGAFE, EFAGACEDFCBGDB, DFAGADEBFCBGEC, AFAGBDEBFCDGEC, DFAGADCEFBCGBE, ECFGBCEBDFAGAD, DEFGADAECFBGCB, CDFGCBDEBFAGAE, EBDGBFEDACAGFC, CDEGCFDAEABGFB, AEAGCDFECBDGBF, FAEAGCDFECBDGB, DFCEGDCBFEBAGA, BFCBGDCEFADAGE, ECFDGCEBDFBAGA, DAFAGDCEBFCBGE, BCFBGCDEAFADGE, AEAFGBDEBCFDGC, ADAFGCDEBCFBGE, AFACEGDCFBEDBG, BFCBEGCDFAEADG, EBFDBGECDFACAG, BEFBCGDECFADAG, EBDFBGEDCAFACG, AEAFCGDECBFDBG, AEADFGCEDBCFBG, ADAEFGDBCEBFCG]
12: # <216288 strings> #

टिप्पणियाँ

  • ऑर्डर के लैंगफोर्ड तार का Nउत्पादन तभी किया जा सकता है जब N ≡ 0 (mod 4)या N ≡ 3 (mod 4),
  • आप लोअर-केस और अपर-केस दोनों अक्षरों का उपयोग कर सकते हैं,
  • आप बाद के नंबरों का भी उपयोग कर सकते हैं ( 012...या 123...इसके बजाय ABC...)
  • स्ट्रिंग्स का ऑर्डर जिसमें उन्हें आउटपुट के रूप में प्रकट होना चाहिए, अनिर्दिष्ट है,
  • आउटपुट काफी लंबा हो सकता है (उदाहरण के लिए, ऑर्डर के 5 ट्रिलियन अलग-अलग लैंगफोर्ड स्ट्रिंग्स हैं 20), इसलिए आपके प्रोग्राम को वास्तव में उन सभी को आउटपुट करने की आवश्यकता नहीं है, लेकिन इसे सिद्धांत रूप में काम करना होगा (पर्याप्त समय और मेमोरी दी गई है)।
  • यह चुनौती / r / dailyprogrammer से ली गई है , सारा श्रेय / u / XenophonOfAthens को जाता है

4
सैंडबॉक्स में बारीकी से संबंधित चुनौती है। हालांकि किसी भी तरह की आवश्यकता नहीं है, यह आमतौर पर एक अच्छा विचार है और शायद डुप्लिकेट के लिए भी जांच करने के लिए विनम्र है।
मार्टिन एंडर

क्या हम सिर्फ संख्याओं की एक संख्या को आउटपुट कर सकते हैं?
लीकेय नन

@LeakyNun: ज़रूर, क्यों नहीं। मैंने विवरण अपडेट किया।
शौकी

1
मैं का उल्लेख इस (कार्यक्रम चलाने)
लीकी नून

जवाबों:


3

CJam (23 बाइट्स)

{,2*e!{__f{\a/1=,(}=},}

ऑनलाइन डेमो । यह एक अनाम ब्लॉक (फ़ंक्शन) है जो स्टैक पर इनपुट लेता है और स्टैक पर आउटपुट को 0-आधारित अनुक्रमिक पूर्णांकों के सरणियों के एक सरणी के रूप में छोड़ देता है।


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