সংখ্যার তালিকায় আমরা খুঁজে বের করতে চাই কোন তিনটি উপাদান একটি নির্দিষ্ট যোগফল দিতে যোগ দিতে পারে। আমরা একে ত্রিপল বলি। এবং তালিকায় এমন অনেক ট্রিপলেট থাকতে পারে। উদাহরণস্বরূপ, যোগফল 10টি 1,6,3 এবং 1,5,4 আকারে তৈরি করা যেতে পারে। এই প্রবন্ধে আমরা দেখব কিভাবে একটি প্রদত্ত সংখ্যার তালিকা থেকে এই জাতীয় সমস্ত ট্রিপলেট খুঁজে বের করা যায়।
পরিসীমা এবং টেম্প ভেরিয়েবল ব্যবহার করা
এটি একটি ঐতিহ্যগত পদ্ধতি যেখানে আমরা অস্থায়ী ভেরিয়েবল তৈরি করব। এই ভেরিয়েবলগুলি তালিকা থেকে উপাদানগুলিকে ধরে রাখবে এবং তাদের যোগফল প্রয়োজনীয় মানের সাথে সমান কিনা তা পরীক্ষা করবে। তারপর এটি চূড়ান্ত ফলাফল সেটে এই ধরনের ভেরিয়েবল জমা করতে থাকবে।
উদাহরণ
def SumTriplets(listA, sum):
trpltcnt = 0
res = []
for i in range(0, len(listA) - 1):
s = set()
tmp = []
# Adding first element
tmp.append(listA[i])
current_sum = sum - listA[i]
for j in range(i + 1, len(listA)):
if (current_sum - listA[j]) in s:
trpltcnt += 1
# Adding second element
tmp.append(listA[j])
# Adding third element
tmp.append(current_sum - listA[j])
# Appending tuple to the final list
res.append(tuple(tmp))
tmp.pop(2)
tmp.pop(1)
s.add(listA[j])
return res
listA = [11,12,13,14,15,16,17,18,19,20]
print("Required triplets:\n",SumTriplets(listA, 40)) আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
Required triplets: [(11, 15, 14), (11, 16, 13), (11, 17, 12), (12, 15, 13)]
উদাহরণ
from itertools import combinations
listA = [11,12,13,14,15,16,17,18,19,20]
def fsum(val):
return sum(val) == 40
res = list(filter(fsum,list(combinations(listA, 3))))
print("Required triplets:\n",res) আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
Required triplets: [(11, 12, 17), (11, 13, 16), (11, 14, 15), (12, 13, 15)]