Как это работает?
Ковер Серпинского начинается с квадрата. Этот квадрат разделен на девять равных частей. Наименьший меньший квадрат удаляется из исходного большего квадрата. Затем оставшиеся квадраты снова делятся на девять равных частей, и из каждого квадрата удаляется самый центральный квадрат. Когда этот процесс повторяется, наблюдается красивый узор ковра Серпинского.
Предположим, мы начинаем с черного квадрата.
Разделите его на 9 равных частей и удалите центральный квадрат.
Повторение процесса ведет дальше примерно так.

Мы можем детально визуализировать это явление на этом видео .
Посмотрим, как выглядит его код:
# импортировать необходимые модули
import
numpy as np
from
PIL
import
Image
# общее количество повторений процесса
всего
=
7
# размер изображения
размер
=
3
*
*
всего
# создать изображение
квадрат
=
np.empty ([size, size,
3
], dtype
=
np.uint8)
color
=
np.array ([
255
,
255
,
255
], dtype
=
np. uint8)
# заливаем черным цветом
Square.fill (
0
)
for
i
in
диапазон
(
0
, total
+
1
):
stepdown
=
3
*
*
(всего
-
i)
for
x
in
range
(
0
,
3
*
*
i):
# проверка центрального квадрата
if
x
%
3
=
=
1
:
for
y
in
range
(
0
,
3
*
*
i):
if
y
%
3
=
=
1
:
# измените цвет
Square [y
*
stepdown: (y
+
1
)
*
stepdown, x
*
stepdown: (x
+
1
)
*
stepdown]
=
color
# сохранить полученное изображение
save_file
=
"sierpinski.jpg"
Image.fromarray (квадрат) .save (сохранить _file)
# отобразить его в консоли
i
=
Изображение.
open
(
" sierpinski.jpg "
)
i.show()
Вывод:
Это ковер Серпинского после 7 повторений. Вы можете получить его код для других языков ‚Äã‚Äãв rosettacode .