Число обмотки - це ціле число чистих обертів проти годинникової стрілки, які повинен був зробити спостерігач, щоб слідувати заданому замкнутому шляху. Зауважте, що будь-які оберти за годинниковою стрілкою вважаються від’ємними до числа обмотки. Шлях дозволяється самостійно перетинатися.
Деякі приклади (безсоромно взяті з Вікіпедії) наведені нижче:
Ваша мета - обчислити число обмотки для заданого шляху.
Вхідні дані
Припускається, що спостерігач знаходиться біля походження (0,0)
.
Вхід - це кінцева послідовність точок (подібних до пари цілих чисел) від будь-якого потрібного джерела введення, що описує кусковий лінійний шлях. Ви можете вирівняти це в 1D послідовність цілих чисел, якщо це потрібно, а також можете зсунути введення, щоб прийняти всі x координати перед усіма y координатами / навпаки. Ви також можете прийняти введення як комплексне число a+b i
. Шлях може самостійно перетинатися і може містити сегменти нульової довжини. Перша точка - це початок шляху і передбачається лежати десь на позитивній осі х.
Жодна частина шляху не перетинатиме початок. Шлях завжди буде закритим (тобто перша і втрачена точка однакові). Ваш код може передбачати або останню точку, або вимагає включення її.
Наприклад, залежно від ваших уподобань обидва входи вказують один і той же квадрат:
мається на увазі кінцева точка
1,0
1,1
-1,1
-1,-1
1,-1
явна кінцева точка
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Вихідні дані
Вихід є єдиним цілим числом для числа обмотки. Це може бути будь-яке джерело (повернене значення, stdout, файл тощо).
Приклади
Всі приклади мають кінцеву точку, чітко визначену і подаються у вигляді 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"
?)