ধরুন আমরা একটি ডেটা স্ট্রাকচার তৈরি করতে চাই যা পূর্ণসংখ্যার একটি তালিকা তৈরি করতে পারে, এবং যখনই আমাদের একটি কার্যকর উপায়ে প্রয়োজন হয় তখন সূচক i থেকে সূচক j-1 পর্যন্ত উপাদানগুলির যোগফল খুঁজে বের করার জন্য একটি ফাংশন রয়েছে। দুটি ফাংশন আছে।
- কনস্ট্রাক্টর যেটি পূর্ণসংখ্যা অ্যারে দিয়ে একটি নতুন উদাহরণ তৈরি করে।
- get_sum(i, j) সূচী i এবং শেষ সূচক j-1 থেকে অ্যারের উপাদানগুলির পূর্ণসংখ্যার যোগফল প্রদান করে।
সুতরাং, যদি ইনপুটটি অ্যারে =[5,2,3,6,4,7,8,9,3,2] এর মতো হয় তবে একটি অবজেক্ট অবজেক্ট তৈরি করুন এবং obj.get_sum(1,5) এবং obj ফাংশনগুলিকে কল করুন। get_sum(4,8), তাহলে আউটপুট হবে যথাক্রমে 15 এবং 28। যেহেতু প্রথম পরিসরের উপাদানগুলি [2,3,6,4] তাই যোগফল হল 15 এবং দ্বিতীয় পরিসরের উপাদানগুলি হল [4,7,8,9] এখানে যোগফল হল 28৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- কন্সট্রাক্টর সংজ্ঞায়িত করুন। এটি অ্যারে নিয়ে যাবে
- সংখ্যা :=এটি একটি তালিকা, প্রাথমিকভাবে 0 ঢোকান
- অ্যারের প্রতিটি x এর জন্য, করুন
- যোগের শেষে সন্নিবেশ করুন (x + (অন্তিম যোগফল))
- একটি ফাংশন সংজ্ঞায়িত করুন get_sum()। এর জন্য i, j লাগবে
- রিটার্ন যোগফল[j] - যোগফল[i]
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class RangeSum: def __init__(self, array): self.sums = [0] for x in array: self.sums.append(x + self.sums[-1]) def get_sum(self, i, j): return self.sums[j] - self.sums[i] array = [5,2,3,6,4,7,8,9,3,2] obj = RangeSum(array) print(obj.get_sum(1,5)) print(obj.get_sum(4,8))
ইনপুট
[5,2,3,6,4,7,8,9,3,2] obj.get_sum(1,5) obj.get_sum(4,8)
আউটপুট
15 28