# this program is for generating the Pythagorean Triples(a, b, c).
# using the Pythagorean Triples Theorem:
# a = s*t, b = (s**2 - t**2)/2, c = (s**2 + t**2)/2.
# s and t are odd, and they are relatively prime.
sortByA = open("PythagoreanTriplesSortByA.txt", "w")
sortByB = open("PythagoreanTriplesSortByB.txt", "w")
sortByC = open("PythagoreanTriplesSortByC.txt", "w")
T = int(input("input the max t(odd) for iterator:"))
S = int(input("input the max s(odd and normally bigger than T) for iterator:"))
pythagoreanTriplesList = []
for t in range(1, T + 1, 2):
for s in range(t + 2, S + 1, 2):
triple = (s * t, int((s**2 - t**2)/2), int((s**2 + t**2)/2))
pythagoreanTriplesList.append(triple)
# sorted by a
pythagoreanTriplesList.sort(key = lambda triple : triple[0])
for i in range(0, len(pythagoreanTriplesList)):
triple = pythagoreanTriplesList[i]
sortByA.write("({0}, {1}, {2})\n".format(triple[0], triple[1], triple[2]))
# sorted by b
pythagoreanTriplesList.sort(key = lambda triple : triple[1])
for i in range(0, len(pythagoreanTriplesList)):
triple = pythagoreanTriplesList[i]
sortByB.write("({0}, {1}, {2})\n".format(triple[0], triple[1], triple[2]))
# sorted by c
pythagoreanTriplesList.sort(key = lambda triple : triple[2])
for i in range(0, len(pythagoreanTriplesList)):
triple = pythagoreanTriplesList[i]
sortByC.write("({0}, {1}, {2})\n".format(triple[0], triple[1], triple[2]))