सबसे छोटा पदार्थ सूचकांक


9

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

मेरे पास यहां जो है वह एक प्रकार का दस्तावेज है। इस दस्तावेज़ की प्रत्येक पंक्ति पर एक एकल शब्द या संक्षिप्त वाक्यांश है। दस्तावेज़ को क्रमबद्ध नहीं किया गया है, लेकिन यह ठीक है कि मुझे पता है कि सब कुछ कहां है। मैं चीजों को तेज़ी से खोजने में कुछ मदद का उपयोग कर सकता था, और इसके लिए मुझे एक दूसरी सूची चाहिए। यह वह जगह है जहाँ आप इस दस्तावेज़ में पाठ की प्रत्येक पंक्ति के लिए आते हैं, मुझे कुछ पहचानकर्ता चाहिए। कुछ मैं CTRL+ कर सकता हूं F, लेकिन यह एक परिणाम प्राप्त करने के लिए बिल्कुल आवश्यक से अधिक लंबा नहीं हो सकता है।

उदाहरण इनपुट:

(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)

उदाहरण आउटपुट:

ap,3,7,q,f,w,ba,bi

मैं खुद को यहाँ दोहराने जा रहा हूँ, यह सुनिश्चित करने के लिए कि हम उसी पृष्ठ पर हैं:

  • इनपुट एक अनफ़ॉर्मेटेड टेक्स्ट फ़ाइल है, जिसमें आइटम की एक सूची होती है, जिसे लाइन ब्रेक द्वारा अलग किया जाता है। मैंने इसे यहाँ .txt प्रारूप में रखा है, इसे "STUFF.TXT" कहा जाता है
  • दस्तावेज़ की पहली और अंतिम पंक्ति खाली है। हर दूसरी पंक्ति में लंबाई> 0 का प्रवेश होता है।
  • फ़ाइल में केवल अल्फ़ान्यूमेरिक वर्ण (सभी निचले मामले), रिक्त स्थान, और पंक्ति विराम शामिल हैं।
  • वांछित आउटपुट पहचानकर्ताओं की एक सूची है, उसी क्रम में मेरी मूल सूची के रूप में।
  • मुझे हर सूची आइटम के लिए एक से अधिक खोज शब्द नहीं चाहिए। यदि कई उत्तर हैं, तो एक को चुनें, मुझे इसकी परवाह नहीं है। उपर्युक्त उदाहरण में मैंने 'एपी' an appleको चुना, लेकिन आप 'एन', 'ए', 'पीपी', 'पीएल' या 'ले' को चुन सकते थे। 'ए' नहीं, क्योंकि वह अंदर है banana
  • मैं आपको आश्वासन दे सकता हूं, फ़ाइल कभी खाली नहीं होती है, और इसमें कभी भी डुप्लिकेट नहीं होते हैं।
  • यदि आवश्यक हो , तो आप लाइन टर्मिनेटर पर मेल कर सकते हैं। लेकिन यह केवल एक अंतिम उपाय है जिसका उपयोग तब किया जाता है जब सूची आइटम (जैसे 'सेब' और 'सेब') के बीच अंतर करने का कोई अन्य तरीका नहीं है।

मानक खामियों की अनुमति नहीं है। इसके अलावा, यह कोड गोल्फ है इसलिए सबसे कम कोड जीतता है।

एक और उदाहरण:

(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)

और इसका आउटपुट:

ban,ny,g,be,ye,ke,aki,ar

1
@CarpetPython इसे सबसे कम संभव होना चाहिए। रिक्त स्थान इनपुट और आउटपुट में हो सकता है, सवाल में जोड़ा गया।
फ़्रीक्वेड

क्या हम खोज शब्द की शुरुआत में नई लाइनों का उपयोग कर सकते हैं, अगर एक स्ट्रिंग दूसरे का प्रत्यय है?
मार्टिन एंडर

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

4
मुझे पूरा यकीन है कि यह समस्या एनपी-पूर्ण है। मुझे लगता है कि मैं इस पर सटीक कवर समस्या को कम कर सकता हूं।
फ़ूजक्कल

4
यह अधिक है कि आपको कोई रचनात्मक समाधान दिखाई नहीं देगा क्योंकि ब्रूट बल से बेहतर कोई समाधान नहीं है।
फ्यूजएक्सएक्सएल

जवाबों:


3

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

Lsm.:bdtUbKfT.zj\,mhf!}Yjb-Kk+yky++bkbK

हर स्ट्रिंग की सभी सबसेट को बढ़ती लंबाई में Bruteforces और जाँचता है कि क्या यह स्ट्रिंग किसी अन्य के अंदर होती है। अगर वह काम नहीं करता है, तो यह सभी सबसेट को छोड़कर ऐसा ही करेगा \nstring\n


जब मैं यह परीक्षण करता हूं तो मुझे एक खराब प्रकार संयोजन त्रुटि मिलती है। pyth.herokuapp.com/…
freekvd

@freekvd Heroku के पास Pyth का पुराना संस्करण होना चाहिए, क्योंकि .:पहले प्रकार के स्ट्रिंग और दूसरे प्रकार के int के साथ कॉल करना कोई त्रुटि नहीं है। रेपो से पाइथ का उपयोग करने का प्रयास करें: github.com/isaacg1/pyth
orlp
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.