project euler problem 9 https projecteuler netproblem9 special pythagorean triplet a pythagorean triplet is a set of three natural numbers a b c for which a2 b2 c2 for example 32 42 9 16 25 52 there exists exactly one pythagorean triplet for which a b c 1000 find the product abc references https en wikipedia orgwikipythagoreantriple returns the product of a b c which are pythagorean triplet that satisfies the following 1 a b c 2 a2 b2 c2 3 a b c 1000 solution 31875000 returns the product of a b c which are pythagorean triplet that satisfies the following 1 a b c 2 a2 b2 c2 3 a b c 1000 solutionfast 31875000 benchmark code comparing two different version function returns the product of a b c which are pythagorean triplet that satisfies the following 1 a b c 2 a 2 b 2 c 2 3 a b c 1000 solution 31875000 returns the product of a b c which are pythagorean triplet that satisfies the following 1 a b c 2 a 2 b 2 c 2 3 a b c 1000 solution_fast 31875000 benchmark code comparing two different version function
def solution() -> int:
    

    for a in range(300):
        for b in range(a + 1, 400):
            for c in range(b + 1, 500):
                if (a + b + c) == 1000 and (a**2) + (b**2) == (c**2):
                    return a * b * c

    return -1


def solution_fast() -> int:
    

    for a in range(300):
        for b in range(400):
            c = 1000 - a - b
            if a < b < c and (a**2) + (b**2) == (c**2):
                return a * b * c

    return -1


def benchmark() -> None:
    
    import timeit

    print(
        timeit.timeit("solution()", setup="from __main__ import solution", number=1000)
    )
    print(
        timeit.timeit(
            "solution_fast()", setup="from __main__ import solution_fast", number=1000
        )
    )


if __name__ == "__main__":
    print(f"{solution() = }")