কম্পিউটার

প্রদত্ত তালিকা থেকে পাইথন গ্রুপ অ্যানাগ্রাম


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যা একটি তালিকায় সমস্ত অ্যানাগ্রামকে গোষ্ঠীভুক্ত করে। প্রথমে দেখা যাক অ্যানাগ্রাম কি .

যেকোন দুটি স্ট্রিং যেখানে একই অক্ষর ভিন্ন ক্রমে থাকে তাকে অ্যানাগ্রাম বলা হয়।

সমাধানে ডুব দেওয়ার আগে, আসুন একটি উদাহরণ দেখি।

ইনপুট

['বিড়াল', 'কুকুর', 'ফায়ারড', 'গড', 'প্যাট', 'ট্যাপ', 'ভাজা', 'ট্যাক'] 

আউটপুট

[['cat', 'tac'], ['dog', 'god'], ['fred', 'fred'], ['pat', 'tap']]]

আমরা সমস্যাটিকে দুই ভাগে ভাগ করব। প্রথমত, আমরা একটি ফাংশন লিখব যা পরীক্ষা করে যে দুটি স্ট্রিং অ্যানাগ্রাম কি না। অ্যানাগ্রাম চেক করতে কোড লিখতে নিচের ধাপগুলো অনুসরণ করুন।

  • স্ট্রিং শুরু করুন।
  • উভয়টি স্ট্রিং সাজান।
  • যদি উভয় সাজানো স্ট্রিং সমান হয় তাহলে True ফেরত দিন অন্যথায় মিথ্যা .

উদাহরণ

দুটি স্ট্রিং অ্যানাগ্রাম নাকি নোটার_অ্যানাগ্রাম =ল্যাম্বডা x, y:str(sorted(x.lower())) ==str(sorted(y.lower()))# ফাংশনপ্রিন্ট কল করে তা পরীক্ষা করতে # সাধারণ ল্যাম্বডা ফাংশন (are_anagrams('cat', 'tac'))print(are_anagrams('cat', 'Tac'))print(are_anagrams('cat', 'dog'))

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

TrueTrueFalse

এখন, আমরা জানি কিভাবে দুটি স্ট্রিং চেক করতে হয় তারা অ্যানাগ্রাম কিনা। কিন্তু, এটা আমাদের সমস্যা সমাধানের জন্য যথেষ্ট নয়। আমাদের একটি তালিকা থেকে সমস্ত অ্যানাগ্রামকে সাবলিস্ট হিসাবে গোষ্ঠী (সঞ্চয়) করতে হবে।

আমরা কিভাবে সমস্যার সমাধান করতে পারি?

উপাদানগুলিকে গোষ্ঠীবদ্ধ করতে অভিধানগুলি ব্যবহার করা এটি একটি সর্বোত্তম অনুশীলন। সম্পর্কিত অ্যানাগ্রামের জন্য আমাদের কাছে একটি একক কী থাকবে। আপনি যদি পাইথনে নতুন হন তবে এটি কিছুটা বিভ্রান্তিকর। আসুন আমরা যা চাই তা অর্জনের পদক্ষেপগুলি দেখি৷

  • স্ট্রিংগুলির তালিকা শুরু করুন।
  • একটি খালি অভিধান শুরু করুন।
  • লিস্টের উপরে পুনরাবৃত্তি করুন।
    • স্ট্রিং সাজান।
    • এটি অভিধানে আছে কি না তা পরীক্ষা করুন।

      • এটি অভিধানে উপস্থিত থাকলে, তার তালিকায় স্ট্রিংটি যুক্ত করুন।
    • অন্যথায় অ্যানাগ্রামগুলি সঞ্চয় করার জন্য বর্তমান স্ট্রিং সহ একটি তালিকা সহ কী শুরু করুন৷
  • একটি তালিকায় অভিধানের সমস্ত মান মুদ্রণ করুন।

উদাহরণ

# স্ট্রিংসনাগ্রামের একটি তালিকা শুরু করা =['বিড়াল', 'কুকুর', 'ফায়ারড', 'গড', 'প্যাট', 'ট্যাপ', 'ফ্রাইড', 'ট্যাক' # একটি খালি ডিক্টগ্রুপড_অ্যানাগ্রামের শুরু করা হচ্ছে ={ } # অ্যানাগ্রামে স্ট্রিং-এর জন্য সমস্ত অ্যানাগ্রামকে গোষ্ঠীভুক্ত করতে তালিকার উপর পুনরাবৃত্তি:# স্ট্রিং সাজানো sorted_string =str(sorted(string)) # স্ট্রিংটিকে dict-এ চেক করা হচ্ছে যদি গোষ্ঠীবদ্ধ_anagrams-এ sorted_string:# গ্রুপ অ্যানাগ্রামে স্ট্রিং যোগ করা হয় grouped_anagrams[sorted] .append(string) else:# বর্তমান স্ট্রিং গ্রুপড_অ্যানাগ্রামের সাথে একটি তালিকা শুরু করা হচ্ছে 

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

[['কুকুর', 'গড'], ['প্যাট', 'ট্যাপ'], ['বিড়াল', 'ট্যাক'], ['ফায়ারড', 'ফ্রাইড']]

উপসংহার

আপনি পাশাপাশি বিভিন্ন পদ্ধতি ব্যবহার করে সমস্যার সমাধান করতে পারেন। ডিফল্টডিক্ট নামে একটি ডেটা স্ট্রাকচার আছে এটি আপনাকে অভিধানে কী পরীক্ষা করা এড়াতে সহায়তা করে। আপনি এটি অন্বেষণ করতে পারেন এবং সেই অনুযায়ী কোড পরিবর্তন করতে পারেন৷

টিউটোরিয়ালটিতে আপনার কোন সন্দেহ থাকলে, মন্তব্য বিভাগে উল্লেখ করুন।


  1. পাইথনে প্রদত্ত তালিকা থেকে শেষ এন উপাদানগুলি পান

  2. পাইথনে তালিকার প্রদত্ত তালিকা থেকে ইতিবাচক উপাদান পান

  3. একটি পাইথন তালিকা থেকে বিগ্রাম গঠন

  4. পাইথনে গ্রুপ অ্যানাগ্রাম