All challenges
Medium 0 solved 0% acceptance

Find Right-Triangle Triples

List all integer right triangles with a specified perimeter.

Problem

Find every triple of positive integers a < b < c for which a² + b² = c² and a + b + c = perimeter. Return each triple as [a, b, c], ordered by increasing a and then b. Do not include permutations of the same sides.

Implement pythagorean_triplets(perimeter).

Input

perimeter: The required sum of all three sides.

Output

Return a list of triples in the specified order.

Constraints

3 ≤ perimeter ≤ 100,000. Return an empty list if no triangle qualifies.

Examples

Example 1
Input:
perimeter = 30

Expected output:
expected = [
    [5, 12, 13]
]
Input:
long long perimeter = 30;

Expected output:
std::vector<std::vector<long long>> expected = {
    {5, 12, 13}
};
Input:
long perimeter = 30;

Expected output:
long[][] expected = new long[][] {
    new long[] {5, 12, 13}
};

Explanation

5 + 12 + 13 = 30 and 5² + 12² = 13². This is the only qualifying triple.

Example 2
Input:
perimeter = 11

Expected output:
expected = []
Input:
long long perimeter = 11;

Expected output:
std::vector<std::vector<long long>> expected = {};
Input:
long perimeter = 11;

Expected output:
long[][] expected = new long[][] {};

Explanation

No increasing positive integer right-triangle triple sums to 11.

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.