Рекурсия · 12 из 19
Бабушкина снежинка
В семейном архиве нашлась бабушкина вышивка — снежинка, у которой каждый край изломан мелкими зубцами, каждый зубец — ещё более мелкими, и так, пока хватало нитки. Внук хочет повторить её на вышивальной машине, а машина шьёт по списку точек. Узор устроен одинаково на каждом шаге: отрезок делится на три части, над средней встаёт треугольный зубец, и с каждой из четырёх новых частей — то же самое.
Что сделать
Постройте точки зубчатого края — кривой Коха — от точки a до точки b с заданной глубиной узора.
Что приходит
aиb— концы отрезка, кортежи(x, y)glubina— сколько раз повторить узор: 0 — просто отрезок
Что вернуть
Список точек (x, y) по порядку от a до b, без повторов на стыках.
Допишите функцию koh в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Отрезок от (0, 0) до (3, 0), глубина 1: его делят на три части, точки (1, 0) и (2, 0), а над средней частью встаёт зубец с вершиной (1,5; 0,866). Пять точек: (0, 0), (1, 0), вершина, (2, 0), (3, 0).
koh((0, 0), (3, 0), 1)
[(0, 0), (1.0, 0.0), (1.5, 0.8660254037844386), (2.0, 0.0), (3, 0)]
Глубина 0 — список из двух точек: [a, b], как пришли.
Глубина n > 0: отрезок a–b делят на три равные части точками p2 (треть пути) и p4 (две трети). Вершина зубца p3 — конец отрезка p2–p4, повёрнутого вокруг p2 на 60° против часовой стрелки: если идти от a к b, зубец встаёт слева. Затем каждая из четырёх частей a–p2, p2–p3, p3–p4, p4–b строится той же функцией с глубиной n − 1, и списки склеиваются: точка на стыке двух частей — один раз. При глубине n точек в ответе 4ⁿ + 1. Числа не округляются.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.