Pentagon numbers

Problem 44

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?
from tools import pentagonal, is_pentagonal


def run():
    pentagonals = []
    pentagonals_set = set()

    for p in pentagonal():
        for p2 in pentagonals:
            if (p - p2) in pentagonals_set and is_pentagonal(p + p2):
                return p - p2

        pentagonals.insert(0, p)
        pentagonals_set.add(p)