'''
Problem 45:

Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:

Triangle	 	Tn=n(n+1)/2	 	1, 3, 6, 10, 15, ...
Pentagonal	 	Pn=n(3n−1)/2	 	1, 5, 12, 22, 35, ...
Hexagonal	 	Hn=n(2n−1)	 	1, 6, 15, 28, 45, ...
It can be verified that T285 = P165 = H143 = 40755.

Find the next triangle number that is also pentagonal and hexagonal.
'''


import numpy as np

def triangular_pentagonal_hexagonal():

    res = [] #append solutions
    i = 1
    while True:
        hexn = i*(2*i - 1)
        j = i + 1
        while True:
            pentn = j*(3*j - 1)/2
            if hexn == pentn:
                k = j + 1
                while True:
                    trian = k*(k + 1)/2
                    if pentn == trian:
                        res.append(trian)
                        if len(res) > 1:
                            return res
                        else:
                            break
                    elif trian > pentn:
                        break
                    k += 1
            elif pentn > hexn:
                break
            j += 1
        i += 1
        if i > 100000:
            return res

def main():
    print('number that is triangular, pentagonal and hexagonal: ', triangular_pentagonal_hexagonal())

if __name__=='__main__':
    main()