संख्याओं की एक सूची में हम यह पता लगाना चाहते हैं कि कौन से तीन तत्व मिलकर एक निश्चित योग दे सकते हैं। हम इसे ट्रिपलेट कहते हैं। और सूची में ऐसे कई ट्रिपलेट हो सकते हैं। उदाहरण के लिए, योग 10 संख्याओं 1,6,3 के साथ-साथ 1,5,4 से उत्पन्न किया जा सकता है। इस लेख में हम देखेंगे कि दी गई संख्याओं की सूची से ऐसे सभी ट्रिपलेट कैसे खोजें।
range और अस्थायी चर का उपयोग करके
यह पारंपरिक दृष्टिकोण है जिसमें हम अस्थायी चर बनाएंगे। ये चर सूची से तत्वों को रखेंगे और जांचेंगे कि क्या उनका योग आवश्यक मान के बराबर है। फिर यह ऐसे चरों को अंतिम परिणाम सेट में जमा करता रहेगा।
उदाहरण
def SumTriplets(listA, sum):
trpltcnt = 0
res = []
for i in range(0, 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:\n", SumTriplets(listA, 40))
आउटपुट
Required triplets: [(11, 15, 14), (11, 16, 13), (11, 17, 12), (12, 15, 13)]
itertools के साथ
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)]