Войти Создать аккаунт

Функции · 21 из 31

Спирограф

Валера нашёл в ящике сына спирограф — пластмассовое кольцо и шестерёнки с дырочками для ручки. Шестерёнка радиусом r катится внутри кольца радиусом R, ручка вставлена на расстоянии d от её центра, и выходят те самые узоры с открыток. Валера хочет «шестерёнку в программе»: выбрал кольцо, шестерёнку и дырочку — получил функцию, которая по времени говорит, где сейчас ручка.

Что сделать

Сделайте шестерёнку: по кольцу, шестерёнке и дырочке верните функцию, которая по времени отвечает, где ручка.

Что приходит

  • R — радиус кольца

  • r — радиус шестерёнки, меньше R

  • d — на каком расстоянии от центра шестерёнки дырочка с ручкой

Что вернуть

Функцию одного довода t, которая возвращает пару (x, y) — где ручка в момент t; формулы — в «Подробных правилах».

Допишите функцию spirograf в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой

Пример

spirograf(5, 3, 5) — кольцо 5, шестерёнка 3, ручка на краю шестерёнки. Получившаяся функция в момент 0 отвечает (7.0, 0.0): центр шестерёнки на расстоянии 2 от центра кольца, ручка ещё на 5 дальше. В проверке точки для моментов 0, 1 и 2 округлены до тысячных.

Тот же пример кодом
Вызов
[tuple(round(v, 3) + 0 for v in spirograf(5, 3, 5)(t)) for t in (0, 1, 2)]
Вернуть
[(7.0, 0.0), (5.01, -1.409), (0.344, -3.041)]
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.