import turtle as t

# ustawiamy największą prędkość rysowania
t.speed(0)
# rozmiar całego rysunku
rozmiar_najwiekszego_trojkata = 220.0
# rozmiar, poniżej którego nie rysujemy mniejszych trókątów
najmniejszy_rozmiar = 20

# definiujemy funkcję rysującą trójkąt Sierpińskiego
def trojkat_sierpinskiego(rozmiar):
    # jeśli trójkąt jest mniejszy niż najmniejszy_rozmiar to rysujemy go
    if rozmiar < najmniejszy_rozmiar:
        t.right(60)
        for _ in range(3):
            t.forward(rozmiar)
            t.right(120)
        t.left(60)
    # w przeciwnym wypadku dzielimy trójkąt na 4 trójkąty
    else:
        # zmniejszamy rozmiar trójkąta o połowę
        nowy_rozmiar = rozmiar / 2
        # rysujemy 3 trójkąty, najpierw górny
        trojkat_sierpinskiego(nowy_rozmiar)
        t.right(120)
        t.forward(nowy_rozmiar)
        t.left(120)
        # następnie dolny lewy
        trojkat_sierpinskiego(nowy_rozmiar)
        t.forward(nowy_rozmiar)
        # dolny prawy
        trojkat_sierpinskiego(nowy_rozmiar)
        # wracamy na początkową pozycję
        t.left(120)
        t.forward(nowy_rozmiar)
        t.right(120)

# wywołujemy funkcję rysującą trójkąt Sierpińskiego w zadanym rozmiarze
trojkat_sierpinskiego(rozmiar_najwiekszego_trojkata)

t.mainloop()

