import functools
def sierpinski(n):
def aggregate(TRIANGLE, I):
SPACE = " " * (2 ** I)
return [SPACE+X+SPACE for X in TRIANGLE] + [X+" "+X for X in TRIANGLE]
return functools.reduce(aggregate, range(n), ["*"])
print("\n".join(sierpinski(4)))