কম্পিউটার টিউটোরিয়াল

পাইথনে স্টোন 이용해 নদী পার করা সম্ভব কিনা যাচাই করার প্রোগ্রাম

একটি সর্টেড লিস্ট stones দেওয়া আছে যা নদীর স্টোন পজিশন নির্দেশ করে। শেষ স্টোন-এ পৌঁছাতে হবে। প্রতিটি জাম্পে গত জাম্পের দূরত্ব k হলে পরবর্তী জাম্প k-1, k, k+1 হতে পারে। নদী পার করা সম্ভব কিনা বের করতে হবে।

উদাহরণস্বরূপ, stones = [0,1,3,4,5,6,8,9,13] হলে আউটপুট True। পথ: ০→১ (১), ১→৩ (২), ৩→৫ (২), ৫→৮ (৩), ৮→১৩ (৫)।

সমাধানের পদ্ধতি (DFS + মেমোরাইজেশন / ব্যাকট্র্যাকিং)

  1. start = stones[0], end = stones[-1]।
  2. stones কে সেট-এ কনভার্ট করুন O(1) লুকআপের জন্য।
  3. check(pos, prev) রিকার্সিভ ফাংশন:
    • যদি pos == end: True।
    • jump = prev-1, prev, prev+1 এর জন্য:
      • যদি jump >= 1 এবং pos+jump in stones এবং check(pos+jump, jump) → True।
    • False রিটার্ন।
  4. check(start, 0) কল করুন।

পাইথন কোড উদাহরণ

class Solution:
    def solve(self, A):
        start, end = A[0], A[-1]
        A = set(A)
        def check(pos=start, prev=0):
            if pos == end:
                return True
            for jump in [prev-1, prev, prev+1]:
                if jump >= 1:
                    next_pos = jump + pos
                    if next_pos in A and check(next_pos, jump):
                        return True
            return False
        return check()

ob = Solution()
stones = [0, 1, 3, 4, 5, 6, 8, 9, 13]
print(ob.solve(stones))

ইনপুট

[0, 1, 3, 4, 5, 6, 8, 9, 13]

আউটপুট

True
  1. পাইথনে আযল নম্বর (Ugly Number) যাচাই করার প্রোগ্রাম

  2. পাইথনে স্ট্রিং প্যালিনড্রোম কিনা যাচাই করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: কোনো সংখ্যা প্রাইম কিনা তা যাচাই করা

  4. পাইথনে প্যালিনড্রোম স্ট্রিং চেক করা