কম্পিউটার

পাইথনে মানুষের কাছে ক্যান্ডি বিতরণ করুন


ধরুন আমরা কিছু সংখ্যক ক্যান্ডিকে নিম্নলিখিত উপায়ে n সারির লোকেদের মধ্যে বিতরণ করতে চাই -

  • তারপর আমরা প্রথম ব্যক্তিকে 1টি ক্যান্ডি, দ্বিতীয় ব্যক্তিকে 2টি ক্যান্ডি এবং শেষ লোকেদের এন ক্যান্ডি না দেওয়া পর্যন্ত এভাবেই দেই৷
  • এর পরে, আমরা আবার সারির শুরুতে ফিরে যাই, প্রথম ব্যক্তিকে n + 1 ক্যান্ডি, দ্বিতীয় ব্যক্তিকে n + 2 ক্যান্ডি, এবং শেষ পর্যন্ত 2 * n ক্যান্ডি না দেওয়া পর্যন্ত .

আমাদের ক্যান্ডি ফুরিয়ে না যাওয়া পর্যন্ত আমরা এই প্রক্রিয়াটি পুনরাবৃত্তি করব। শেষের লোকেরা আমাদের বাকি সব ক্যান্ডি পাবে (অগত্যা আগের উপহারের চেয়ে একটি বেশি নয়)।

আমাদের একটি অ্যারে ফেরত দিতে হবে যা ক্যান্ডির চূড়ান্ত বিতরণকে প্রতিনিধিত্ব করে। তাহলে ধরুন ক্যান্ডি 7, এবং n =3, তাহলে আউটপুট হবে [2, 2, 3]। সুতরাং প্রথমে প্রথম ব্যক্তি 1 পাবে। অ্যারেটি হল [1, 0, 0], দ্বিতীয়টি পেয়েছে 2, তারপর অ্যারেটি [1, 2, 0], তৃতীয়টি পেয়েছে 3, তারপর অ্যারেটি [1, 2, 3], এবং অবশেষে প্রথমটি আবার 1 পেয়েছে, তাই অ্যারে হল [2, 2, 3]

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

  • res হল n উপাদানগুলির একটি অ্যারে এবং 0 দিয়ে পূরণ করুন
  • সূচক :=0
  • যখন ক্যান্ডি> 0
    • res[index mod n] :=res[index mod n] + min of candies and index + 1
    • ক্যান্ডিজ :=ক্যান্ডিস – ১
    • সূচী :=সূচক + 1
  • রিটার্ন রিটার্ন

উদাহরণ

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

class Solution(object):
   def distributeCandies(self, candies, num_people):
      res = [0 for i in range(num_people)]
      index = 0
      while candies>0:
         res[index%num_people] += min(candies,index+1)
         candies-=(index+1)
         index+=1
      return res
ob1 = Solution()
print(ob1.distributeCandies(8, 3))

ইনপুট

8
3

আউটপুট

[3, 2, 3]

  1. issuperset() পাইথনে

  2. পাইথনে ফ্রোজেনসেট()

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

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