Число обмоток - это целое число чистых оборотов против часовой стрелки, которое наблюдатель должен совершить, чтобы следовать заданному замкнутому пути. Обратите внимание, что любые обороты по часовой стрелке считаются отрицательными по отношению к числу обмоток. Путь разрешен самопересекающимся.
Некоторые примеры (бессовестно взятые из Википедии) приведены ниже:
Ваша цель - вычислить число обмоток для заданного пути.
вход
Предполагается, что наблюдатель находится в начале координат (0,0)
.
Входные данные представляют собой конечную последовательность точек (в виде пары целых чисел) из любого желаемого входного источника, который описывает кусочно-линейный путь. При желании вы можете сгладить это в одномерную последовательность целых чисел, а также быстро изменить ввод, чтобы получить все координаты x перед всеми координатами y / наоборот. Вы также можете принять ввод как комплексное число a+b i
. Путь может сам пересекаться и может содержать сегменты нулевой длины. Первая точка - это начало пути, и предполагается, что она лежит где-то на положительной оси x.
Никакая часть пути не будет пересекать источник. Путь всегда будет закрыт (т.е. первая и потерянная точки совпадают). Ваш код может подразумевать последний пункт или требовать его включения.
Например, в зависимости от ваших предпочтений оба входа указывают один и тот же квадрат:
подразумеваемая конечная точка
1,0
1,1
-1,1
-1,-1
1,-1
явная конечная точка
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Выход
Вывод представляет собой одно целое число для номера обмотки. Это может быть любой источник (возвращаемое значение, стандартный вывод, файл и т. Д.).
Примеры
Все примеры имеют явно определенную конечную точку и задаются как пары x, y. Между прочим, вы также должны иметь возможность напрямую подавать эти примеры в любые коды, предполагающие неявно определенные конечные точки, и выходные данные должны быть одинаковыми.
1. Базовый тест
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Выход
1
2. Повторный точечный тест
1,0
1,0
1,1
1,1
-1,1
-1,1
-1,-1
-1,-1
1,-1
1,-1
1,0
Выход
1
3. Проверка по часовой стрелке
1,0
1,-1
-1,-1
-1,1
1,1
1,0
Выход
-1
4. Внешний тест
1,0
1,1
2,1
1,0
Выход
0
5. Смешанная обмотка
1,0
1,1
-1,1
-1,-1
1,-1
1,0
1,-1
-1,-1
-1,1
1,1
1,0
1,1
-1,1
-1,-1
1,-1
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Выход
2
счет
Это код гольф; самый короткий код выигрывает. Применяются стандартные лазейки. Вы можете использовать любые встроенные функции, если они специально не предназначены для вычисления числа обмоток.
"1-i"
или"1-1i"
?)