Not even that slow of a solution for 44
This commit is contained in:
48
44/main.py
Normal file
48
44/main.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
'''
|
||||||
|
Pentagonal numbers are generated by the formula, Pn=n(3n−1)/2. The first ten pentagonal numbers are:
|
||||||
|
|
||||||
|
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
|
||||||
|
|
||||||
|
It can be seen that P4 + P7 = 22 + 70 = 92 = P8. However, their difference, 70 − 22 = 48, is not pentagonal.
|
||||||
|
|
||||||
|
Find the pair of pentagonal numbers, Pj and Pk, for which their sum and difference are pentagonal and D = |Pk − Pj| is minimised; what is the value of D?
|
||||||
|
'''
|
||||||
|
|
||||||
|
import math
|
||||||
|
|
||||||
|
def p(n):
|
||||||
|
return int(n * (3 * n - 1) / 2)
|
||||||
|
|
||||||
|
def isTriangle(n, triangleSet, triangleList):
|
||||||
|
if n > triangleList[-1]:
|
||||||
|
toBeat = triangleList[-1]
|
||||||
|
m = len(triangleList)
|
||||||
|
|
||||||
|
while toBeat < n:
|
||||||
|
m += 1
|
||||||
|
toBeat = p(m)
|
||||||
|
triangleList.append(toBeat)
|
||||||
|
triangleSet.add(toBeat)
|
||||||
|
|
||||||
|
return n == triangleList[-1]
|
||||||
|
|
||||||
|
else:
|
||||||
|
return n in triangleSet
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Hello this is Patrick")
|
||||||
|
|
||||||
|
bestDif = math.inf
|
||||||
|
triangleList = [1, 5]
|
||||||
|
triangleSet = set(triangleList)
|
||||||
|
|
||||||
|
for i in range(2, 10000):
|
||||||
|
for j in range(1, i):
|
||||||
|
if isTriangle(p(i) - p(j), triangleSet, triangleList) and isTriangle(p(i) + p(j), triangleSet, triangleList):
|
||||||
|
bestDif = min(bestDif, abs(p(i) - p(j)))
|
||||||
|
|
||||||
|
print(bestDif)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user