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

পাইথনে লিস্ট থেকে নির্দিষ্ট যোগফল দেওয়া সব ট্রিপলেট বের করুন


সমস্যা বিবরণ

একটি সংখ্যার লিস্ট এবং একটি টার্গেট যোগফল দেওয়া আছে। লিস্ট থেকে তিনটি উপাদান (ট্রিপলেট) বের করতে হবে যাদের যোগফল টার্গেটের সমান। একাধিক ট্রিপলেট থাকতে পারে।

পদ্ধতি ১: রেঞ্জ এবং টেম্পরারি ভেরিয়েবল (ট্রাডিশনল)

তিনটি নেস্টেড লুপ দিয়ে সব ট্রিপলেট চেক করুন।

def SumTriplets(listA, sum):
    trpltcnt = 0
    res = []
    for i in range(len(listA) - 1):
        s = set()
        tmp = []
        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
                tmp.append(listA[j])
                tmp.append(current_sum - listA[j])
                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:", SumTriplets(listA, 40))
# [(11, 15, 14), (11, 16, 13), (11, 17, 12), (12, 15, 13)]

পদ্ধতি ২: itertools.combinations() এবং filter() ব্যবহার

combinations(listA, 3) দিয়ে সব ট্রিপলেট বানান, filter দিয়ে যোগফল মিলে যাওয়া গুলো রাখুন।

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:", res)
# [(11, 12, 17), (11, 13, 16), (11, 14, 15), (12, 13, 15)]
  1. পাইথনে ইন্ডেক্স ব্যবহার করে লিস্টের এলিমেন্ট বের করুন

  2. লিস্টের কিউমুলেটিভ সাম বের করার পাইথন প্রোগ্রাম

  3. পাইথনে লিস্টের সব পেয়ারের অ্যাবসোলিউট ডিফারেন্সের যোগফল

  4. পাইথনে লিস্টের গড় (Average) বের করা