একটি 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