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

পিসেস অ্যারে থেকে মূল অ্যারে তৈরি করা যায় কিনা যাচাই করা

একটি nums অ্যারে দেওয়া আছে (সব এলিমেন্ট ইউনিক)। আর একটি pieces অ্যারে আছে যাতে ছোট ছোট সাবঅ্যারে রয়েছে। যাচাই করতে হবে pieces-এর সাবঅ্যারেগুলো কোনো অর্ডারে কনক্যাট করলে nums বানানো যায় কিনা। কিন্তু pieces[i]-এর ভিতরের অর্ডার বদলানো যাবে না।

ইনপুট: nums = [5,1,12,36,2,47,6], pieces = [[2,47,6],[12,36],[1],[5]] → আউটপুট: True। অর্ডার: [[5], [1], [12,36], [2,47,6]]।

সমাধানের ধাপসমূহ

  • temp := []

  • প্রতিটি p ∈ pieces-এর জন্য:

    • যদি p[0] ∉ nums: return False
    • l = len(p), indx = nums.index(p[0])
    • যদি nums[indx:indx+l] != p: return False
    • temp.extend(p)
  • যদি len(nums) == len(temp): return True, অন্যথায় False

উদাহরণ (Python)

def solve(nums, pieces):
    temp = []
    for p in pieces:
        if p[0] not in nums:
            return False
        l = len(p)
        indx = nums.index(p[0])
        if nums[indx:indx+l] != p:
            return False
        else:
            temp.extend(p)
    if len(nums) == len(temp):
        return True
    else:
        return False

nums = [5, 1, 12, 36, 2, 47, 6]
pieces = [[2, 47, 6], [12, 36], [1], [5]]
print(solve(nums, pieces))

ইনপুট

[5,1,12,36,2,47,6], [[2,47,6],[12,36],[1],[5]]

আউটপুট

True
  1. পাইথনে ট্রিপলেট কাউন্ট যাদের যোগফল টার্গেটের চেয়ে ছোট (3Sum Smaller)

  2. পাইথনে ইন্ডেক্স ০ থেকে শেষ ইন্ডেক্সে পৌঁছানো সম্ভব কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে স্ট্রিংয়ে বাম বা ডান প্রান্তে পৌঁছানো সম্ভব কিনা যাচাই করার প্রোগ্রাম

  4. পাইথনে যেকোনো সিটি থেকে যেকোনো সিটিতে যাওয়া সম্ভব কিনা যাচাই করার প্রোগ্রাম