আমার ম্যাট্রোশকা পুতুলগুলি পুনর্গঠন করুন


20

পটভূমি

একটি ম্যাট্রিয়োশকা পুতুল (বা রাশিয়ান নেস্টিং পুতুল) পুতুলগুলির একটি সেট যা একে অপরের অভ্যন্তরে ফিট করে। আমি ঘটনাক্রমে আমার ম্যাট্রোশকা পুতুলের সংমিশ্রণটি মিশ্রিত করেছি এবং কোনটি কোনটির ভিতরে যায় তা আমার মনে নেই।

উদ্দেশ্য

অনন্য স্ট্রিংয়ের একটি তালিকা দেওয়া হয়েছে , এগুলিকে নেস্টেড ম্যাট্রিওশকা পুতুলগুলিতে ভাগ করুন। প্রতিটি স্ট্রিং একটি পৃথক পুতুল এবং একটি ম্যাট্রোশকা পুতুল স্ট্রিংগুলির একটি তালিকা।

বিধি

দিন min(a,b)স্ট্রিং lexicographic কমপক্ষে হবে aএবং b। যাক a ⊂ bবোঝাতে যে aএকটি সাবস্ট্রিং b। তারপর,

  1. ম্যাট্রিওস্কা পুতুলের তালিকাটি অভিধানিকভাবে বাছাই করা উচিত
  2. স্ট্রিং স্ট্রিং মধ্যে মাপসইa করতে পারেনba ⊂ 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
পিপিসিজিতে আপনাকে স্বাগতম! পোস্টটি যথেষ্ট ভাল কিনা তা আপনি যদি নিশ্চিত না হন তবে আপনি প্রথমে এটি স্যান্ডবক্সে পোস্ট করতে পারেন।
ব্যবহারকারী 202729

2
এটি বাধ্যতামূলক নয়, কেবল এটি এখানে রাখুন। সম্প্রদায়টি এটি পছন্দ করে।
ব্যবহারকারী 202729

2
ভবিষ্যতে @ সুজিৎ, প্রথমে স্যান্ডবক্সে পোস্ট করার চেষ্টা করুন। আপনার চ্যালেঞ্জগুলি মূল সাইটে পোস্ট করার আগে এটির প্রতিক্রিয়া জানার জায়গা। এখনই এটি নিয়ে চিন্তা করবেন না, যেহেতু এই চ্যালেঞ্জটি ঠিক যেমনটি মনে হচ্ছে তবে ভবিষ্যতের জন্য এটি বিবেচনা করার মতো বিষয়।
শে

3
এর ফলাফল কী হওয়া উচিত ab, ba, aba, bab? নিয়ম 3 দ্বারা, উভয় abএবং baঢোকা উচিত aba, এবং নিয়ম 4 দ্বারা, baপরিণত পারেন চলতে পারে না abaবা bab
Zgarb

উত্তর:


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)])

এটি অনলাইন চেষ্টা করুন!

@Dlnan থেকে টিপস সহ -২৮ বাইট, @ ডেনিস দ্বারা বাগ খুঁজে পাওয়া এবং @ মিস্টার এক্সকোডার দ্বারা বাগ ফিক্স


1
301 বাইট । শুধু পরিণত iএকটি ল্যামডা ফাংশন মধ্যে এবং পরিবর্তনশীল নাম পরিবর্তন outকরতে o
dylnan

1
297 বাইট (ই = গণনা)
ডাইলান


এই সমস্যাটি ঠিক করতে 298 বাইট । এছাড়াও, out3-চর চলক নাম ... সিরিয়াসলি: পি?
মিঃ এক্সকোডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.