Рекурсия · 14 из 19
Треугольник Серпинского
Вацлав Серпинский в 1915 году вырезал из треугольника середину — треугольник, перевёрнутый вершиной вниз. Остались три треугольника вдвое меньше, и из каждого он вырезал середину тоже. Если не вырезать, а рисовать, — проще: треугольник глубины g — это три треугольника глубины g − 1 по углам.
Что сделать
Нарисуйте треугольник Серпинского: на глубине 0 — залитый треугольник, глубже — три вдвое меньших по углам.
Что приходит
t— черепашка: стоит в левом нижнем углу и смотрит вдоль основанияdlina— сторона треугольникаglubina— глубина: 0 — один залитый треугольник
Что вернуть
Ничего — функция рисует. В конце черепашка там же, где начала, и смотрит туда же.
Допишите функцию serpinskiy в редакторе справа.
Рисуйте черепашкой t, как turtle дома, — проверка
сравнивает нарисованное; возвращать ничего не нужно.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Глубина 1, сторона 100: три залитых треугольника со стороной 50 — в левом нижнем углу, в правом нижнем и наверху; середина пустая.
Глубина 0: залитый треугольник со стороной dlina — begin_fill(), три раза вперёд на dlina и налево на 120°, end_fill(). Заливка — цветом черепашки (fillcolor), какой бы он ни был. Глубина g: три треугольника глубины g − 1 со стороной dlina / 2 — в левом нижнем углу (там, где стоит черепашка), в правом нижнем (вперёд на dlina / 2) и наверху (от левого нижнего — налево на 60° и вперёд на dlina / 2, затем снова смотреть вдоль основания). Каждый вызов возвращает черепашку на место. Как она переходит между углами — с пером или без, — неважно: путь лежит по сторонам, и рисунок от него не меняется.
Образцовый тест целиком
from cherepashka import risunok as _risunok_p
_risunok_p(serpinskiy, 100, 1)
<рисунок: 6 линий, 3 заливки, 1 цвет; от (0, 0) до (100, 86.6); отпечаток cc86d322c4>
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.