কম্পিউটার

পাইথনে ফেরিস হুইল থেকে লাভ সর্বাধিক করার জন্য প্রয়োজনীয় ন্যূনতম ঘূর্ণনগুলি খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন চারটি কেবিন সহ একটি ফেরিস হুইল আছে এবং প্রতিটি কেবিনে চারজন যাত্রী থাকতে পারে। চাকা ঘড়ির কাঁটার বিপরীত দিকে ঘোরে এবং প্রতিটি ঘূর্ণনের জন্য 'রান' পরিমাণ টাকা খরচ হয়। আমাদের কাছে এখন একটি অ্যারে 'কাস্ট' রয়েছে যাতে n আইটেম রয়েছে এবং প্রতিটি আইটেম i-ম ঘূর্ণনের আগে ফেরিস হুইলে প্রবেশের জন্য অপেক্ষা করা লোকের সংখ্যা নির্দেশ করে। চাকাতে চড়ার জন্য, প্রতিটি গ্রাহককে একটি পরিমাণ টাকা 'বোর্ড' দিতে হবে এবং সেই পরিমাণ টাকা চাকাটির ঘড়ির কাঁটার বিপরীতে ঘোরানোর জন্য। কোনো কেবিনে কোনো আসন খালি থাকলে লাইনে দাঁড়িয়ে থাকা ব্যক্তিদের অপেক্ষা করা উচিত নয়। সুতরাং ডেটা দেওয়া হলে, আমাদেরকে ন্যূনতম পরিমাণে ঘূর্ণন প্রয়োজন যাতে লাভ সর্বাধিক করা যায়।

পাইথনে ফেরিস হুইল থেকে লাভ সর্বাধিক করার জন্য প্রয়োজনীয় ন্যূনতম ঘূর্ণনগুলি খুঁজে বের করার জন্য প্রোগ্রাম

সুতরাং, যদি ইনপুট কাস্ট =[6,4], বোর্ড =6, রান =4 এর মত হয়, তাহলে আউটপুট হবে 3

প্রথমে লাইনে দাঁড়িয়ে আছে ৬ জন। তাই প্রথমে 4 জন প্রথম কেবিনে প্রবেশ করে এবং বাকিরা পরবর্তী কেবিনের জন্য অপেক্ষা করে৷

চাকা ঘোরে, এবং দ্বিতীয় কেবিন আসে। এদিকে লাইনে ওঠেন আরও ৪ জন। তাই পরবর্তী 4 জন অপেক্ষা করছে পরের কেবিনে।

চাকাটি আবার ঘোরে, এবং বাকি তিনজন গ্রাহক পরের কেবিনে প্রবেশ করে।

সুতরাং, সমস্ত গ্রাহকদের পরিষেবা দেওয়ার জন্য ন্যূনতম তিনটি ঘূর্ণন প্রয়োজন৷

এই ঘূর্ণনগুলি থেকে সর্বাধিক মুনাফা অর্জন করা হয় (10 * 6) - (3 * 4) =48৷

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

  • res :=-1

  • mst :=0

  • tmp :=0

  • wt :=0

  • কাস্টে প্রতিটি সূচক আইডিএক্স এবং মান ভ্যালের জন্য, করুন

    • wt :=wt + val

    • chg :=সর্বনিম্ন (4, wt)

    • wt :=wt - chg

    • tmp :=tmp + chg * বোর্ড - রান

    • যদি mst

      • res :=idx + 1

      • mst :=tmp

  • x :=wt / 4

  • y :=wt mod 4

  • যদি 4 * বোর্ড> রান হয়, তাহলে

    • res :=res + x

  • যদি y * বোর্ড> রান হয়, তাহলে

    • res :=res + 1

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

উদাহরণ

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

def solve(cust, board, run):
   res = -1
   mst = 0
   tmp = 0
   wt = 0
   for idx, val in enumerate(cust):
      wt += val
      chg = min(4, wt)
      wt -= chg
      tmp += chg * board - run
      if mst < tmp:
         res, mst = idx+1, tmp
   x, y = divmod(wt, 4)
   if 4 * board > run:
      res += x
   if y * board > run:
      res += 1
   return res

print(solve([6,4], 6, 4))

ইনপুট

[6,4], 6, 4

আউটপুট

3

  1. পাইথনে সাব-ট্রির নোড মানের সমষ্টি থেকে ন্যূনতম মান বের করার প্রোগ্রাম

  2. একটি গ্রাফের বৃহত্তম চক্রের সর্বনিম্ন আকার খুঁজে বের করার জন্য প্রোগ্রাম (পাইথন)

  3. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে একটি ফোল্ডার থেকে বাড়িতে ফিরে যাওয়ার জন্য প্রয়োজনীয় ন্যূনতম লাফ খুঁজে বের করার জন্য প্রোগ্রাম