Solution to problem 39

This commit is contained in:
David Doblas Jiménez 2021-09-09 15:58:18 +02:00
parent e7c2e60c25
commit d35117e417

44
src/Python/Problem039.py Normal file
View File

@ -0,0 +1,44 @@
#!/usr/bin/env python3
"""
Created on 05 Jun 2021
@author: David Doblas Jiménez
@email: daviddoji@pm.me
Solution for problem 39 of Project Euler
https://projecteuler.net/problem=39
"""
from utils import timeit
@timeit("Problem 39")
def compute():
"""
If p is the perimeter of a right angle triangle with integral length sides,
{a,b,c}, there are exactly three solutions for p = 120:
{20,48,52}, {24,45,51}, {30,40,50}
For which value of p 1000, is the number of solutions maximised?
"""
ans, val = 0, 0
for p in range(2, 1001, 2):
sol = 0
for a in range(1, p):
for b in range(a+1, p-2*a):
c = p - (a + b)
if a**2 + b**2 == c**2:
sol += 1
elif a**2 + b**2 > c**2:
# As we continue our innermost loop, the left side
# gets bigger, right gets smaller, so we're done here
break
if sol > ans:
ans, val = sol, p
return val
if __name__ == "__main__":
print(f"Result for Problem 39: {compute()}")