मेरे तार कितने संगत हैं?


12

परिचय

एक ही लंबाई के दो स्ट्रिंग्स और बी पर विचार करें एल , और एक पूर्णांक K and 0 । इस चुनौती के प्रयोजनों के लिए, हम कहते हैं कि तार कर रहे हैं कश्मीर , संगत अगर वहाँ एक स्ट्रिंग मौजूद सी लंबाई की कश्मीर ऐसी है कि एक संयोजन का एक सन्निहित सबस्ट्रिंग है बीसीबी । ध्यान दें कि A , BAB का एक विकल्प है , इसलिए A और B हमेशा L- असंगत होते हैं (लेकिन कुछ अन्य K <L के लिए K- असंगत भी हो सकते हैं )।

इनपुट

आपके इनपुट एक ही सकारात्मक लंबाई के दो तार हैं, ऊपरी और निचले ASCII अक्षरों से मिलकर।

उत्पादन

आपका आउटपुट सबसे कम गैर-नकारात्मक पूर्णांक K होगा, जैसे कि इनपुट K- असंगत हैं।

उदाहरण

इनपुट पर विचार करें

A = HHHHHH
B = HHttHH

वे 0-संगत नहीं हैं, क्योंकि A का विकल्प नहीं है HHttHHHHttHH। वे 1-संगत भी नहीं हैं, क्योंकि HHttHH#HHttHH कोई भी विकल्प का विकल्प नहीं है कि किस पत्र पर रखा गया है #। हालांकि, एक है की सबस्ट्रिंग HHttHHHHHHttHH, जहां सी दो अक्षर का स्ट्रिंग है HH। इस प्रकार इनपुट 2-संगत हैं, और सही आउटपुट है 2

नियम और स्कोरिंग

आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिख सकते हैं। सबसे कम बाइट गिनती जीतता है, और मानक खामियों को रोक दिया जाता है।

परीक्षण के मामलों

अनुकूलता की स्थिति सममित है, इसलिए दो आदानों को स्वैप करने से आउटपुट में बदलाव नहीं होना चाहिए।

E G -> 1
E E -> 0
aB Bc -> 1
YY tY -> 1
abcd bcda -> 0
abcXd bxcda -> 4
Hello Hello -> 0
Hello olHel -> 1
aBaXYa aXYaBa -> 1
aXYaBa aBaXYa -> 1
HHHHHH HHttHH -> 2
abcdab cdabcd -> 2
XRRXXXXR XRXXRXXR -> 4
evveeetev tetevevev -> 7
vzzvzJvJJz vJJvzJJvJz -> 10
JJfcfJJcfJfb JcfJfbbJJJfJ -> 5
GhhaaHHbbhGGH HHaaHHbbGGGhh -> 9
OyDGqyDGDOGOGyG yDGqOGqDyyyyOyD -> 12
ffKKBBpGfGKpfGpbKb fGpbKbpBBBffbbbffK -> 9
UZuPPZuPdVdtuDdDiuddUPtUidtVVV dtUPtUidtVVVtDZbZZPuiUZuPPZuPd -> 21

लीडरबोर्ड

लीडरबोर्ड और भाषा द्वारा विजेताओं की सूची तैयार करने के लिए यहां एक स्टैक स्निपेट है। यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई दे रहा है, इसे फॉर्म के हेडर से शुरू करें

## Language, N bytes

आप स्ट्राइकथ्रू टैग का उपयोग करके हेडर में पुराने स्कोर रख सकते हैं: 57 के<s>57</s> रूप में दिखाई देगा ।

जवाबों:


8

अजगर, १६

lhf}QjT,vzvz+k.:

A के सबसे छोटे विकल्प का पता लगाएं, जब A में स्ट्रिंग में B परिणामों की दो प्रतियों के बीच डाला जाए।

यदि दूसरी पंक्ति में उद्धरण नहीं थे, तो यह दो बाइट्स कम हो सकता है, लेकिन यह अजीब लगता है?

परीक्षण सूट


4

पायथन 3, 155 168 157 बाइट्स

कुल की लंबाई है AAके अंत की शुरुआत की तुलना करें Bऔर कुल से घटाएं। Bके अंत की शुरुआत की तुलना करें Aऔर कुल से घटाएं। कुल का पूर्ण मान लौटाएँ जब तक कि कुल लंबाई के बराबर न हो, जिस स्थिति में वापसी 0।

def f(A,B):
    T=L=len(A)
    C=D=1
    for i in range(L,0,-1):
        if A[:i]==B[-i:]and C:
            T,C=T-i,0
        if A[-i:]==B[:i]and D:
            T,D=T-i,0
    return (0,abs(T))[T!=-L]

संपादित करें:f("abcdab","cdabcd")==2 मामले को संभालें


3
दुर्भाग्य से यह काम नहीं करता है f("abcdab", "cdabcd")जिसके लिए 2. होना चाहिए
नील

@ नील अच्छा कैच। मैं परीक्षण के मामलों में जोड़ दूँगा।
ज़र्गब


@ mEQ5aNLrK3lqs3kfSa5HbvsTWe0nIu मैं छवि को देख रहा था और सोच रहा था कि 'यह एक निफ्टी डिबगर विचार है जो इमोजी का उपयोग करने के लिए है, लेकिन मैंने इसे बग नहीं देखा ...'। मुझे लगता है कि ऐड-ऑन इस साइट पर कहर बरपाएगा।
NonlinearFruit

3

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

.*?(?<=^(?=(.*)(?<4-3>.)*(.*) \2.*\1$)(.)*).+
$#4

इसे ऑनलाइन आज़माएं! (सभी परीक्षणों को एक साथ चलाने के लिए थोड़ा संशोधित किया गया है।)

चाल यह है कि हमें उस हिस्से पर पीछे हटना होगा Aजो हमें नहीं मिलता है B, और अब तक मुझे ऐसा करने का कोई तरीका नहीं मिला है, बल्कि लुकरॉइड्स और बैलेंसिंग ग्रुप्स को परेशान किए बिना।


3

जोल्फ, 40 बाइट्स

Wά)Ζ0W<ζli)? h++i]Iζ+ζniIoά0nΖhζ}onhn}wn

कोशिश करो!

मैं जोल्फ के लिए काफी नया हूं, यह पता लगाते हुए बहुत कुछ सीखा। थोड़ा अटपटा लगता है, फिर भी शायद नीचे और आगे गोल्फ हो सकता है। यहां तक ​​कि इस स्पष्टीकरण को लिखते समय 2 बाइट्स भी खटखटाए।

स्पष्टीकरण:

  Wά)                                      While ά (initialized to 16)
     Ζ0                                    Set ζ to 0
       W<ζli)                              While ζ < length(A)
             ? h++i]Iζ+ζniIoά0n            Set ά to 0 if (A + a substring from B of length n + A) contains B
                               Ζhζ         Increment ζ
                                  }onhn    Increment n (initialize to 0
                                       }wn Decrement n and print

मैंने बयाना में कोशिश नहीं की है, और यह एक इष्टतम समाधान हो सकता है, लेकिन मेरा सुझाव है कि पर्वतमाला पर मैप करने की कोशिश करना। ( s0zliयदि आप इस दृष्टिकोण को आजमाना चाहते हैं तो आपको एक सरणी [0 ... लंबाई i] देनी होगी।)
कॉनर ओ'ब्रायन

@ C @ O'Bᴏɴᴏʀ हम्म, मैं एक लुक दूंगा ... यह भी एक इफ कमांड है जिसे मैंने डॉक्यूमेंटेशन / सोर्स से देख कर jmissed किया है या एकमात्र विकल्प है? एक अप्रासंगिक तीसरे तर्क के साथ?
सूज गया

?अगर जोल्फ में है तो सबसे नजदीक है। यह एक टर्नरी की तरह है अगर। ?ABCs returns B` यदि a सत्य है, और Cअन्यथा।
कॉनर ओ'ब्रायन


2

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

(a,b)=>{for(i=0;;i++)for(j=i;j<=a.length;j++)if(b.startsWith(a.slice(j))&&b.endsWith(a.slice(0,j-i)))return i}

aजब तक वे दो छोरों से मेल नहीं खाते तब तक बीच-बीच में टुकड़े टुकड़े करके काम करता है b। लूप अनंत नहीं है क्योंकि यह पहले या बाद में बंद हो जाएगा i == a.length

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