वर्ड चेन रीलोडेड


9

यह प्ले शब्द श्रृंखला का एक प्रकार है और शब्दों की एक लंबी श्रृंखला का निर्माण करता है


इनपुट अद्वितीय शब्दों की एक गैर-खाली सूची है जो कम से कम 2 वर्ण लंबे अक्षर [az] में बनी है। आपको सबसे लंबी संभव श्रृंखला की लंबाई को आउटपुट करने की आवश्यकता है, जहां प्रत्येक बाद का शब्द पिछले शब्द के अंतिम अक्षर से शुरू होता है। आप सूची के किसी भी शब्द से शुरू कर सकते हैं।

एक और मोड़ यह है कि आपको सूची में किसी भी एक शब्द को दोहराने की अनुमति है। हालाँकि, आप किसी भी दो-शब्द ब्लॉक को दोहरा नहीं सकते। उदाहरण के लिए, cat->tac->catअनुमत है, लेकिन cat->tac->cat->tacऐसा नहीं है, क्योंकि आपने दो-शब्द ब्लॉक ( cat->tac) दोहराया है । इसके अलावा, आप एक पंक्ति में दो बार एक ही शब्द का उपयोग नहीं कर सकते (उदाहरण के लिए eye->eye)।

उदाहरण:

  • cat dog tree egg => 3 (बिल्ली-> पेड़-> अंडा)
  • new men ten whim => 5 (दस-> नया-> सीटी-> पुरुष-> नया)
  • truth fret heart his => 5 (झल्लाहट-> सच्चाई-> दिल-> सच्चाई-> उसका)
  • we were stew early yew easy => 9 (stew-> थे-> जल्दी-> yew-> थे-> आसान-> yew-> हम ->
  • tac cat tac cot tac can => 6 (tac-> cat-> tac-> cot-> tac-> can)

(मुझे बताएं कि क्या मैंने इनमें से किसी भी उदाहरण पर गलती की है या यदि आप अधिक के साथ आते हैं।)

जवाबों:


3

पायथन 3 , 150 149 145 बाइट्स

def f(d):
 a=[[w]for w in d]
 while a:b=a[0];a=[f+[l,y]for*f,l in a for y in{*d}-{b for a,b in zip(f,f[1:])if a==l}if l[-1]==y[0]]
 return len(b)

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

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


"cat dog tred xy yz zx"लौटता है 4। क्या वो सही है? यह नहीं होना चाहिए 3?
चास ब्राउन

@ChasBrown xy yz zx xyसबसे लंबी श्रृंखला है, इसलिए 4.
notjagan

1

हास्केल , 131 141 बाइट्स

मूल रूप से जानवर बल दृष्टिकोण .. विचार सभी संभव डोमिनोज़ टुकड़े उत्पन्न करने के लिए है , उन्हें अनुमति दें, जांचें कि क्या यह एक वैध कॉम्बो है और पूरी चीज़ को अधिकतम करें। समय जटिलता हास्यास्पद है, 4 वें परीक्षण का मामला पहले से ही मेरे पीसी पर ~ 4s लेता है और TIO पर यह काम नहीं करता है!

import Data.List
p w=2+maximum[length$takeWhile(\(x,y)->x!!1==y!!0)$zip p$tail p|p<-permutations[[a,b]|(a,b)<-(,)<$>w<*>w,a/=b,last a==b!!0]]

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

Ungolfed

p w = maximum
  [ 2 + length c | p <- permutations [ [a,b] | (a,b) <- (,)<$>w<*>w
                                             , a /= b
                                             , last a == head b
                                     ]
                 , c <- [ takeWhile (\(x,y) -> x!!1 == y!!0) $ zip p (tail p) ]
  ]

संपादित करें : लैंबडबॉट से नंगे हास्केल में बदल गया लेकिन कुछ बाइट्स को गोल्फिंग द्वारा बचाया, जैसे कि यह अभी भी 145बाइट्स से कम है :)


पिछली बार TIO पर मेरे कंप्यूटर पर 19s की तरह था। btw, आप लेम्बडाबोट का उपयोग करने का कारण आयात विवरण लिखने से बचते हैं, है ना?
जियोकॉवेल

हां, है। लेकिन मैंने ऐसा करना बंद कर दिया, क्योंकि कोई और ऐसा नहीं कर रहा था, इसके बारे में निश्चित नहीं है। क्यों?
ბიმო

मैं यह जानने की कोशिश कर रहा हूं कि कौन जीता। आमतौर पर, आप बाइट काउंट में आयात विवरण शामिल करते हैं। लेकिन, यदि आपको ऐसा वातावरण मिला है जिसमें आयात की आवश्यकता नहीं है, तो यह ठीक है।
जियोकॉवेल

बेनाम: ओह, मैं वैसे भी एक जवाब स्वीकार नहीं करेगा । अगर आप चाहते हैं, तो मैं अपना जवाब बदल दूंगा क्योंकि @ नोटजागन का जवाब मेरे मुकाबले बेहतर है।
ბიმო

1
मेरा मतलब है कि यह कोड गोल्फ है, इसलिए आप पहले स्थान पर हैं। वैसे भी, आप जवाब अपने नाम फिट बैठता है। लेकिन मैं इसे आपके अनुरोध पर खुला छोड़ दूंगा।
जियोकॉवेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.