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

পাইথনে দেওয়া বอลটি কোন বক্সে থাকবে তার পজিশন বের করুন


সমস্যা বিবরণ

দুটি অ্যারে A এবং B দেওয়া আছে। A-এর আকার = সারি সংখ্যা, A[i] = i-তম সারিতে বক্সের সংখ্যা। B = বอลের অ্যারে, B[i] = বলের নম্বর। বল i (মান B[i]) সেটি বক্সে যাবে যেটির পজিশন শুরু থেকে B[i]। প্রতিটি B[i]-এর জন্য সারি ও কলাম বের করতে হবে।

উদাহরণস্বরূপ, A=[3,4,5,6], B=[1,3,5,2] হলে আউটপুট [(1,1), (1,3), (2,2), (1,2)]।

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

  1. A-কে প্রিফিক্স সম অ্যারে বানান (সারিগুলোর কিউমুলেটিভ বক্স সংখ্যা)।
  2. প্রতিটি B[i] এর জন্য:
    • bisect_left(A, B[i]) দিয়ে সারি নম্বর row বের করুন।
    • যদি row >= 1 হয়, box_num = B[i] - A[row-1]।
    • অন্যথায় box_num = B[i]।
    • আউটপুট (row+1, box_num)।

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

import bisect

def get_position(A, B):
    len_a = len(A)
    len_b = len(B)
    for i in range(1, len_a):
        A[i] += A[i-1]
    for i in range(len_b):
        row = bisect.bisect_left(A, B[i])
        if row >= 1:
            box_num = B[i] - A[row-1]
        else:
            box_num = B[i]
        print((row + 1, box_num))

A = [3, 4, 5, 6]
B = [1, 3, 5, 2]
get_position(A, B)
# আউটপুট: (1, 1) (1, 3) (2, 2) (1, 2)

ইনপুট

[3, 4, 5, 6], [1, 3, 5, 2]

আউটপুট

(1, 1) (1, 3) (2, 2) (1, 2)
  1. পাইথনে n বার রিভার্সালের পর বলের পজিশন বের করা

  2. পাইথনে একটি প্রদত্ত সমীকরণের মান বের করার প্রোগ্রাম

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

  4. পাইথনে গ্রিড বক্সে বল কোন খানায় পড়বে তা বের করার প্রোগ্রাম