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