def main(): for Pa in ngonalNums(5): for Pb in ngonalNums(5): if Pb >= Pa: break if pentagonal(Pa + Pb) and pentagonal(Pa - Pb): return Pa - Pb
def main(limit): # trick: "merge" the sorted lists until a match is found gens = (ngonalNums(3), ngonalNums(5), ngonalNums(6)) nums = list(map(next, gens)) while nums[0] <= limit or not same(nums): i = min(range(3), key=lambda i: nums[i]) nums[i] = next(gens[i]) return nums[0]
def main(limit): return next(n for n in ngonalNums(3) if n > limit and pentagonal(n) and hexagonal(n))
def ngonalNumsOfLen(n, k): return list(takeLen(k, ngonalNums(n)))
def main(n): return next(t for t in ngonalNums(3) if divisorCount(t) > n)