Solution to problem 39
This commit is contained in:
parent
e7c2e60c25
commit
d35117e417
44
src/Python/Problem039.py
Normal file
44
src/Python/Problem039.py
Normal 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()}")
|
Loading…
x
Reference in New Issue
Block a user