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

পাইথনে অ্যারে সব উপাদান সমান করার জন্য অপারেশনের সংখ্যা

আমাদের একটি উপাদানের অ্যারে দেওয়া আছে, এবং আমাদের সব উপাদানকে ১ দিয়ে ইনক্রিমেন্ট করে সমান করতে হবে। আমাদের প্রতিটি স্টেপে n-1টি উপাদান ইনক্রিমেন্ট করার অনুমতি আছে। আমাদের লক্ষ্য হলো সব অ্যারে এলিমেন্ট সমান করার জন্য মোট কতটি অপারেশন প্রয়োজন তা বের করা।

উদাহরণস্বরূপ, লিস্ট [1, 2, 3] নিলে তিনটি অপারেশনে সব উপাদান সমান করা যায়। একটা সমাধান হলো প্রতিটি স্টেপে সর্বোচ্চ সংখ্যা বের করে বাকি সব উপাদান ১ দিয়ে ইনক্রিমেন্ট করা। কোডটি লিখি।

উদাহরণ

def main():
    # অ্যারে ইনিশিয়ালাইজ
    arr = [1, 2, 3]
    # অপারেশন কাউন্ট ০ দিয়ে ইনিশিয়ালাইজ
    no_of_operations = 0
    flag = 0
    # অ্যারে সমান করার জন্য অপারেশন
    while not are_equal(arr):
        flag = 1
        # লিস্ট থেকে সর্বোচ্চ বের করা
        maximum = max(arr)
        # সর্বোচ্চ বাদে সব উপাদান ইনক্রিমেন্ট
        for i in range(len(arr)):
            if arr[i] != maximum:
                arr[i] += 1
        # অপারেশন কাউন্ট ১ বাড়ানো
        no_of_operations += 1
    print(no_of_operations) if flag == 0 else print(no_of_operations + 1)

# সব উপাদান সমান কিনা চেক
def are_equal(arr):
    global no_of_operations
    for i in range(len(arr) - 1):
        if arr[i] != arr[i + 1]:
            return False
    return True

if __name__ == '__main__':
    main()

আউটপুট

উপরোক্ত প্রোগ্রাম চালালে নিচের ফলাফল পাওয়া যাবে:

3

উপরের মেথড বড় অ্যারের জন্য বেশি সময় নেয়। আমরা অ্যারের যোগফল এবং সর্বনিম্ন উপাদান বের করে অপারেশনের সংখ্যা বের করতে পারি।

  • অ্যারের যোগফল বের করুন।
  • সব উপাদানের মধ্যে সর্বনিম্ন বের করুন।
  • sum - (length * smallest) এক্সপ্রেশন থেকে ভ্যালু প্রিন্ট করুন।

উদাহরণ

নিচের কোডটি দেখুন:

# একটি অ্যারে ইনিশিয়ালাইজ
arr = [1, 2, 3]

# দৈর্ঘ্য
length = len(arr)

# অ্যারে এলিমেন্টের যোগফল
elements_sum = sum(arr)

# সব উপাদানের মধ্যে সর্বনিম্ন
smallest = min(arr)

# অপারেশনের সংখ্যা ক্যালকুলেট
print(elements_sum - (length * smallest))

আউটপুট

উপরোক্ত কোড চালালে নিচের ফলাফল পাওয়া যাবে:

3

উপসংহার

আমরা যে দ্বিতীয় মেথডটি আলোচনা করেছি তা সহজ এবং কম সময় নেয়। টিউটোরিয়াল সম্পর্কে কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।

  1. পাইথনে দুটি স্ট্রিং সমান করার জন্য ন্যূনতম প্রি-প্রসেসিং মুভ গণনা

  2. পাইথনে এলিমেন্ট কমিয়ে অ্যারেকে জিগজ্যাগ বানানো

  3. পাইথনে অ্যারেতে সব উপাদানের ফ্রিকোয়েন্সি গণনা করা

  4. পাইথনে অ্যারেয়ের সব ডিজিট ব্যবহার করে ৩ দিয়ে বিভাজ্য সংখ্যা বানানো সম্ভব কিনা চেক করা