কম্পিউটার

পাইথনে দূরবর্তী বারকোড


ধরুন একটি গুদামে, বারকোডের সারি রয়েছে। i-th বারকোড হল বারকোড[i]। আমাদের বারকোডগুলিকে পুনর্বিন্যাস করতে হবে যাতে কোনও দুটি সংলগ্ন বারকোড একই না হয়। তাই যদি ইনপুট হয় [1,1,1,2,2,2] তাহলে আউটপুট হবে [2,1,2,1,2,1]।

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

  • d নামে একটি মানচিত্র তৈরি করুন
  • বারকোড অ্যারেতে উপস্থিত সংখ্যার ফ্রিকোয়েন্সি d এ সঞ্চয় করুন
  • x :=খালি তালিকা
  • x-এ সমস্ত কী-মান জোড়া সন্নিবেশ করান
  • i :=0
  • res :=একটি তালিকা তৈরি করুন যার দৈর্ঘ্য বারকোডের মতো, এবং পূরণ করুন [0]
  • ফ্রিকেন্সির উপর ভিত্তি করে x সাজান
  • যখন আমি <ফলাফলের দৈর্ঘ্য
    • ফলাফল[i] :=x এর শেষ এন্ট্রির উপাদান
    • x এর শেষ এন্ট্রির ফ্রিকোয়েন্সি মান হ্রাস করুন
    • যদি x এর শেষ উপাদানটির ফ্রিকোয়েন্সি 0 হয়, তাহলে x থেকে সেই এন্ট্রিটি মুছে দিন
    • i 2 দ্বারা বাড়ান
  • i :=1
  • যখন আমি <ফলাফলের দৈর্ঘ্য
    • ফলাফল[i] :=x এর শেষ এন্ট্রির উপাদান
    • x এর শেষ এন্ট্রির ফ্রিকোয়েন্সি মান হ্রাস করুন
    • যদি x এর শেষ উপাদানটির ফ্রিকোয়েন্সি 0 হয়, তাহলে x থেকে সেই এন্ট্রিটি মুছে দিন
    • i 2 দ্বারা বাড়ান
  • ফলাফল

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

উদাহরণ

class Solution(object):
   def rearrangeBarcodes(self, barcodes):
      d = {}
      for i in barcodes:
         if i not in d:
            d[i] = 1
         else:
            d[i]+=1
      x = []
      for a,b in d.items():
         x.append([a,b])
      i = 0
      result = [0]*len(barcodes)
      x = sorted(x,key=lambda v:v[1])
      while i <len(result):
         result[i] = x[-1][0]
         x[-1][1]-=1
         if x[-1][1]==0:
            x.pop()
         i+=2
      i=1
      while i <len(result):
         result[i] = x[-1][0]
         x[-1][1]-=1
         if x[-1][1]==0:
            x.pop()
         i+=2
      return result
ob = Solution()
print(ob.rearrangeBarcodes([1,1,1,2,2,2]))

ইনপুট

[1,1,1,2,2,2]

আউটপুট

[2, 1, 2, 1, 2, 1]

  1. issuperset() পাইথনে

  2. কলযোগ্য() পাইথনে

  3. পাইথনে আন্ডারস্কোর(_)

  4. পাইথনে কুইন