কম্পিউটার

পাইথনে k থেকে শুরু করে আমরা তালিকার শেষ প্রান্তে পৌঁছাতে পারি তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে nums বলা হয় এবং আরেকটি সংখ্যা k। যদি আমরা সূচী k এবং যেকোন সূচক i থেকে শুরু করি, আমরা সঠিক সংখ্যা[i] ধাপে বাম বা ডানে যেতে পারি। আমরা তালিকার শেষ পর্যন্ত পৌঁছাতে পারি কি না তা পরীক্ষা করতে হবে।

সুতরাং, যদি ইনপুটটি nums =[0, 0, 2, 1, 3, 3, 1, 1] k =2 এর মত হয়, তাহলে আউটপুটটি True হবে, যেমন আমরা সূচী 2 থেকে শুরু করি, তারপর সূচী 4-এ যান। এবং তারপর শেষ সূচক 7 এ ঝাঁপ দাও।

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

  • n:=সংখ্যার আকার

  • পরিদর্শন করেছেন :=আকার n এর একটি তালিকা এবং 0

    দিয়ে পূরণ করুন
  • tovisit :=আকার 1 এর একটি তালিকা, এবং এতে k ঢোকান

  • পরিদর্শন করার সময় <0, করুন

    • i:=tovisit থেকে শেষ উপাদান এবং tovisit থেকে মুছে দিন

    • যদি আমি n-1 এর মত হয়, তাহলে

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

  • যদি পরিদর্শন করা হয় [i] 1 এর মত না হয়, তাহলে

    • পরিদর্শন করেছেন[i]:=1

    • আপ:=i + সংখ্যা[i]

    • down:=i - nums[i]

    • যদি উপরে

    • ভিজিট করার শেষে সন্নিবেশ করুন

    • যদি নিচে হয়>=0, তাহলে

    • ভিজিট করার শেষে নিচে প্রবেশ করান

  • রিটার্ন ফলস

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

উদাহরণ

class Solution:
   def solve(self, nums, k):
      n=len(nums)
      visited = [0]*n
      tovisit = [k]
      while len(tovisit)>0:
         i=tovisit.pop()
         if i==n-1:
            return True
         if visited[i]!=1:
            visited[i]=1
            up=i+nums[i]
            dn=i-nums[i]
         if up=0:
            tovisit.append(dn)
      return False
ob = Solution()
nums = [0, 0, 2, 1, 3, 3, 1, 1]
k = 2
print(ob.solve(nums, k))

ইনপুট

[0, 0, 2, 1, 3, 3, 1, 1], 2

আউটপুট

True

  1. রোবট চেক করার প্রোগ্রাম পাইথনে পরিদর্শন করা জায়গাগুলিতে অগ্রসর হয়ে লক্ষ্যে পৌঁছাতে পারে

  2. আমরা পাইথনে সূচক 0 থেকে শেষ অবস্থানে পৌঁছাতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. রোবট পরীক্ষা করার প্রোগ্রাম টার্গেট পজিশনে পৌঁছাতে পারে বা পাইথনে না

  4. একটি তালিকা থেকে অনন্য মান প্রিন্ট করতে পাইথন প্রোগ্রাম