ในรายการตัวเลข เราต้องการค้นหาว่าองค์ประกอบใดสามองค์ประกอบที่สามารถรวมเข้าด้วยกันเพื่อให้ได้ผลรวมที่แน่นอน เราเรียกมันว่าแฝดสาม และในรายการอาจมีแฝดสามมากมาย ตัวอย่างเช่น ผลรวม 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)]