Я смотрю из окна на чердаке во двор соседа. У них есть собака, прикованная к столбу в центре двора. Собака бегает по двору, но всегда находится на конце своей цепи, так что в итоге она оставляет след в грязи. Обычно эта дорожка была бы идеально круглой, но у моих соседей есть некоторые другие полюсы в их дворе, которые цепляются за цепь собаки. Каждый раз, когда цепь собаки ударяется о столб, собака начинает вращаться вокруг нового полюса с любой длиной цепи, равной ее радиусу. Поскольку полюса, собака и цепь имеют нулевую ширину (мои соседи - математики), цепь может вращаться вокруг полюса бесконечно без сокращения радиуса круга. Собака также может пройти через цепь (только не ошейник), если цепь находится на ее пути. Наблюдая за этой странностью какое-то время, я решаю написать код, имитирующий собаку моего соседа. Код будет принимать местоположения центрального полюса, к которому прикована собака, местоположения других полюсов во дворе моих соседей, длину цепи и начальное местоположение собаки, и выводит диаграмму, указывающую путь, где собака стерла траву. Вы можете предположить, что любая комбинация из следующих является постоянной (и, следовательно, не принимать их в качестве входных данных):
Расположение полюса, к которому прикована собака
Длина цепи
Исходное местоположение собаки
Солнце встает, поэтому пространство на полу моего чердака, освещаемое окном, сокращается, давая мне все меньше и меньше места для написания моего кода. Пожалуйста, постарайтесь свести к минимуму количество байтов в вашем коде, чтобы у меня было место для черновика на моем чердаке.
Контрольные примеры
Здесь я предполагаю, что собака начинается в 3 единицах к югу от того полюса, к которому она прикована (красная точка), расположенной в 0,0
. Я указал, где полюса с точками для ясности, вам не нужно включать их в свой вывод.
Poles at 1,2 -1,2
Poles at 0,.5
Poles at 0,1 1,1 -2,1 -1,-.5
Poles at 0,1 1,1
{0,.5}
переворачивается по вертикали без наибольшего круга. Собака по сути начинает зацепляться за второй столб.
{0,-.5}
?