Solve some problems.
This commit is contained in:
37
python/e135.py
Normal file
37
python/e135.py
Normal file
@@ -0,0 +1,37 @@
|
||||
def euler_135():
|
||||
n = 10**7
|
||||
threshold = 10**6
|
||||
lookup = {i: 0 for i in range(1, threshold)}
|
||||
firstpositivestart = 1
|
||||
for x in range(1, n):
|
||||
firstpositive = False
|
||||
for dxy in range(firstpositivestart, x // 2 + 1):
|
||||
z = x - 2 * dxy
|
||||
if z <= 0:
|
||||
break
|
||||
y = x - dxy
|
||||
xyz = x*x - y*y - z*z
|
||||
if xyz <= 0:
|
||||
continue
|
||||
|
||||
# Start when xyz is already greater than 0.
|
||||
if not firstpositive:
|
||||
firstpositivestart = dxy
|
||||
firstpositive = True
|
||||
|
||||
# If xyz is greater than threshold there are no more solutions.
|
||||
if xyz >= threshold:
|
||||
break
|
||||
lookup[xyz] += 1
|
||||
|
||||
r = 0
|
||||
for _, v in lookup.items():
|
||||
if v == 10:
|
||||
r += 1
|
||||
return r
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
solution = euler_135()
|
||||
print("e135.py: " + str(solution))
|
||||
assert solution == 4989
|
||||
Reference in New Issue
Block a user