Finished
11from typing import List
22
33def triplets_with_sum(number: int) -> List[List[int]]:
4 pass
4 result = []
5
6 # Edge Case: number less than 3 (minimum sum for natural numbers 1+1+1)
7 if number < 3:
8 return []
9
10 # For a Pythagorean triplet where a < b < c and a + b + c = number
11 # We know that a < number/3, b < number/2, and c > number/3
12 # So we can limit our search space
13
14 # Edge Case: a must be at least 1
15 for a in range(1, number // 3 + 1):
16 # Using the two equations:
17 # a + b + c = number
18 # a² + b² = c²
19
20 # Substituting c = number - a - b into the second equation:
21 # a² + b² = (number - a - b)²
22 # a² + b² = number² + a² + b² - 2*number*a - 2*number*b + 2*a*b
23 # 0 = number² - 2*number*a - 2*number*b + 2*a*b
24 # 2*number*b - 2*a*b = number² - 2*number*a
25 # b(2*number - 2*a) = number² - 2*number*a
26 # b = (number² - 2*number*a) / (2*number - 2*a)
27 # b = number(number - 2*a) / (2*(number - a))
28
29 # Edge Case: Avoid division by zero when number = a
30 if number == a:
31 continue
32
33 numerator = number * (number - 2 * a)
34 denominator = 2 * (number - a)
35
36 # Edge Case: Check if b is an integer
37 if numerator % denominator != 0:
38 continue
39
40 b = numerator // denominator
41 c = number - a - b
42
43 # Edge Case: Check if it forms a valid triplet (a < b < c and all positive)
44 if a < b < c and a*a + b*b == c*c:
45 result.append([a, b, c])
46
47 return result
48
49# Handled Edge Cases: number less than 3, a equals number (division by zero), b not integer, invalid triplet (a >= b or b >= c or not Pythagorean)
Test NameStatus
test_no_matching_triplets_for_1001
Pass
test_returns_all_matching_triplets
Pass
test_several_matching_triplets
Pass
test_triplets_for_large_number
Pass
test_triplets_whose_sum_is_1000
Pass
test_triplets_whose_sum_is_108
Pass
test_triplets_whose_sum_is_12
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.