मेरी मैट्रीशोका गुड़िया का पुनर्निर्माण करें


20

पृष्ठभूमि

एक Matryoshka गुड़िया (या रूसी घोंसले के शिकार गुड़िया) गुड़िया का एक सेट है जो एक दूसरे के अंदर फिट होते हैं। मैंने गलती से मैट्रीशोका गुड़िया के अपने संग्रह को मिला दिया है और मुझे याद नहीं है कि कौन सा अंदर जाता है।

उद्देश्य

अद्वितीय तारों की एक सूची को देखते हुए , उन्हें नेस्टेड मत्रोश्का गुड़िया में छाँटें। प्रत्येक स्ट्रिंग एक व्यक्तिगत गुड़िया है, और एक matryoshka गुड़िया तार की एक सूची है।

नियम

आज्ञा देना min(a,b)lexicographic min of strings aऔर b। बता दें a ⊂ bकि aइसका एक विकल्प है b। फिर,

  1. Matryoshka गुड़िया की सूची को मूल रूप से क्रमबद्ध किया जाना चाहिए
  2. स्ट्रिंग स्ट्रिंग में फिट हो aसकती हैb अगरa ⊂ b
  3. तो a ⊂ bऔर a ⊂ c, तो aअंदर जाना होगाmin(b,c)
  4. अगर दोनों a ⊂ cऔर b ⊂ c, लेकिन a ⊄ b b ⊄ a, तभी min(a,b)अंदर जाएगाc
  5. अगर दोनों a ⊂ cऔर b ⊂ c, और भी a ⊂ b, तो ही bअंदर जाएंगे c। यानी, सुपरस्ट्रिंग सबस्ट्रिंग से पहले जाते हैं ताकि मैट्रीओशका समय से पहले समाप्त न हो।

उदाहरण

In:
hahaha, hah, lol, lololol, bahaha, bah, haha, ah

Out:
bahaha, bah, ah
hahaha, haha, hah
lololol, lol

In:
aa, aaaa, a, aaaaaaaaaa

Out:
aaaaaaaaaa, aaaa, aa, a

3
यहाँ पहली पोस्ट, कृपया कुछ भी गूंगा / फिक्स इंगित करें।
सुजीत

2
PPCG में आपका स्वागत है! यदि आपको यकीन नहीं है कि पोस्ट काफी अच्छा है, तो आप इसे पहले सैंडबॉक्स में पोस्ट कर सकते हैं।
user202729

2
यह अनिवार्य नहीं है, बस इसे यहां रखें। समुदाय इसे पसंद करता है।
user202729

2
भविष्य में @sujeet, पहले सैंडबॉक्स पर पोस्ट करने का प्रयास करें। मुख्य स्थान पर उन्हें पोस्ट करने से पहले अपनी चुनौतियों के बारे में प्रतिक्रिया प्राप्त करना एक जगह है। इसके बारे में अभी चिंता न करें, क्योंकि यह चुनौती ठीक है, लेकिन यह भविष्य के लिए विचार करने के लिए कुछ है।
R

3
का परिणाम क्या होना चाहिए ab, ba, aba, bab? नियम 3 के अनुसार, दोनों को abऔर नियम 4 baमें जाना चाहिए aba, या baतो abaया में नहीं जा सकता bab
जरगब

जवाबों:


2

पायथन 2 , 298 बाइट्स

def f(x,E=enumerate):
 o=[]
 while any(x):
	for k,p in E(x):
	 e=0
	 if sum(i(p,j)for j in x)<1:
		for d,r in E(o):
		 if i(p,r[-1])*((r[-1]<e)or e==0):m,e=d,r[-1]
		if e:o[m]+=[p]
		else:o+=[[p]]
		x[k]=''
 print sorted(o)
i=lambda p,b:(b!=p)*any([p==b[j:j+len(p)]for j in range(len(b)-len(p)+1)])

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

@28lan से युक्तियों के साथ -28 बाइट्स, @Dennis द्वारा बग ढूंढे, और @ Mr.Xcoder द्वारा बग फिक्स


1
301 बाइट्स । बस iएक लंबो फ़ंक्शन में बदल गया और चर नाम outको बदल दिया o
डायलन



उस समस्या को ठीक करने के लिए, 298 बाइट्स । इसके अलावा, out3-चर चर नाम ... गंभीरता से: पी?
श्री एक्सकोडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.