কম্পিউটার

পাইথন ব্যবহার করে ফাইলের নাম অনন্য করার জন্য প্রোগ্রাম


ধরুন আমরা নাম বলা n স্ট্রিং একটি অ্যারে আছে. আমাদের ফাইল সিস্টেমে n ডিরেক্টরি তৈরি করতে হবে যাতে, ith মিনিটে, আমরা নামের নামের [i] নামের একটি ডিরেক্টরি তৈরি করব। দুটি ফাইলের একই নাম থাকতে পারে না, যদি আমরা একটি ডুপ্লিকেট ডিরেক্টরির নাম লিখি তাহলে সিস্টেমের নামের সাথে (k) আকারে একটি প্রত্যয় যুক্ত হবে, এখানে, k হল ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা যাতে প্রাপ্ত নামটি অনন্য থাকে। আমাদের দৈর্ঘ্যের স্ট্রিংগুলির একটি অ্যারে খুঁজে বের করতে হবে যেখানে ans[i] হল আসল নাম যা ith ডিরেক্টরিতে বরাদ্দ করা হবে যখন আমরা এটি তৈরি করব।

সুতরাং, যদি ইনপুটটি নামের মত হয় =["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"], তাহলে আউটপুট হবে ['my_dir', 'my_dir(1)' , 'my_new_dir', 'my_new_dir(1)', 'abc'] কারণ "my_new_dir" আগে থেকেই একবার উপস্থিত থাকে, তারপর প্রথমটির পরে একটি (1) যোগ করা হয়।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • dic :=একটি নতুন মানচিত্র, যদি কিছু কী উপস্থিত না থাকে তবে 0

    ফেরত দিন
  • res :=একটি নতুন তালিকা

  • নামের প্রতিটি নামের জন্য, করুন

    • যদি নাম dic-এ না থাকে, তাহলে

      • dic[নাম] :=dic[নাম] + 1

      • res এর শেষে নাম সন্নিবেশ করুন

    • অন্যথায়,

      • newname :=name concatenate '(' concatenate dic[name] concatenate ')'

      • যখন নতুন নাম dic-এ উপস্থিত থাকে, do

        • dic[নাম] :=dic[নাম] + 1

        • newname :=name concatenate '(' concatenate dic[name] concatenate ')'

      • dic[নতুন নাম] :=1

      • res এর শেষে নতুন নাম ঢোকান

  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

from collections import defaultdict
def solve(names):
   dic = defaultdict(int)
   res = []
   for name in names:
      if name not in dic:
         dic[name] += 1
         res.append(name)
      else:
         newname = name +'(' + str(dic[name]) + ')'
         while newname in dic:
            dic[name] += 1
            newname = name +'(' + str(dic[name]) + ')'
         dic[newname] = 1
         res.append(newname)
   return res
names = ["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]
print(solve(names))

ইনপুট

["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]

আউটপুট

['my_dir', 'my_dir(1)', 'my_new_dir', 'my_new_dir(1)', 'abc']

  1. পাইথন ব্যবহার করে পিডিএফকে সিএসভিতে রূপান্তর করুন

  2. পাইথনে ভারতীয় পতাকা বানানোর প্রোগ্রাম

  3. পাইথন ব্যবহার করে ফাইল অনুসন্ধান করা হচ্ছে

  4. Python ব্যবহার করে ওয়েবসাইট ব্লকার