কম্পিউটার

পাইথনে শিশু এবং দৈত্য পদক্ষেপ দ্বারা গন্তব্যে পৌঁছানোর জন্য প্রয়োজনীয় সর্বোত্তম পদক্ষেপের সংখ্যা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে প্রশ্নগুলির একটি তালিকা রয়েছে, যেখানে প্রতিটি প্রশ্নের Q[i] একটি ট্রিপলেট [a_i, b_i এবং d_i] রয়েছে। বিবেচনা করুন আমরা প্রাথমিকভাবে (0, 0) অবস্থানে আছি, তারপর এক ধাপে আমরা কিছু অবস্থান (x1, y1) থেকে (x2, y2) এ যেতে পারি যেখানে এই দুটি বিন্দুর মধ্যে ইউক্লিডীয় দূরত্ব কমপক্ষে a এবং সর্বাধিক b। এখন প্রতিটি প্রশ্নের জন্য আমাদের (0, 0) থেকে (d_i, 0) পৌঁছানোর জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক ধাপ খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি Q =[(2,3,1), (1,2,0), (3,4,11)] এর মত হয়, তাহলে আউটপুট হবে [2, 0, 3] কারণ (0, 0) থেকে প্রথম প্রশ্ন a =2 দিয়ে আমরা যেতে পারি $\left(\frac{1}{2},\frac{\sqrt{15}}{2}\right)$ তারপর (1, 0) সুতরাং আমাদের দুটি ধাপ দরকার, সুতরাং আউটপুট হল 2, পরবর্তী কোয়েরির জন্য d হল 0, তাই আমাদের কোনো ধাপ সরানোর দরকার নেই যাতে আউটপুট 0 হয়। এবং তৃতীয়টির জন্য b =4 এবং a =3 সরানো (0, 0) ) থেকে (4, 0) তারপরে (8, 0) তারপরে (11, 0)।

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

  • একটি ফাংশন ধাপ সংজ্ঞায়িত করুন()। এটি a, b, d
  • লাগবে
  • mmin :=সর্বনিম্ন a, b
  • mmax :=সর্বোচ্চ a, b
  • যদি d 0 হয়, তাহলে
    • রিটার্ন 0
  • যদি d হয় mmin বা mmax, তাহলে
    • প্রত্যাবর্তন 1
  • যদি d
  • রিটার্ন 2
  • (d / mmax) এর সিলিং ফেরত দিন
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
  • res :=একটি নতুন তালিকা
  • প্রত্যেক q-এর জন্য Q-এ করুন
    • (a, b, d) :=q
    • res এর শেষে ধাপের ফলাফল (a, b, d) সন্নিবেশ করান
  • রিটার্ন রিটার্ন
  • উদাহরণ

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

    from math import ceil
    
    def steps(a, b, d):
       mmin = min(a, b)
       mmax = max(a, b)
       if d is 0:
          return 0
       if d in [mmin, mmax]:
          return 1
       if d < mmax:
          return 2
       return ceil(d / mmax)
    
    def solve(Q):
       res = []
       for q in Q:
          a, b, d = q
          res.append(steps(a, b, d))
       return res
    
    Q = [(2,3,1), (1,2,0), (3,4,11)]
    print(solve(Q))

    ইনপুট

    [(2,3,1), (1,2,0), (3,4,11)]

    আউটপুট

    [2, 0, 2.0]

    1. পাইথন ব্যবহার করে সমস্ত নোডে পৌঁছানোর জন্য ন্যূনতম সংখ্যক শীর্ষবিন্দু খুঁজে বের করার প্রোগ্রাম

    2. পাইথনে 8-ধাঁধা সমাধানের জন্য ধাপের সংখ্যা খুঁজে বের করার প্রোগ্রাম

    3. পাইথনে লক্ষ্যে পৌঁছানোর জন্য কয়েনের সংমিশ্রণের সংখ্যা খুঁজে বের করার প্রোগ্রাম

    4. পাইথনে একজন দাবা নাইট দ্বারা লক্ষ্য অবস্থানে পৌঁছানোর ন্যূনতম পদক্ষেপগুলি খুঁজে বের করার প্রোগ্রাম