El número de devanado es el número entero de revoluciones netas en sentido antihorario que un observador debe haber hecho para seguir un camino cerrado dado. Tenga en cuenta que cualquier revolución en el sentido de las agujas del reloj cuenta negativamente hacia el número de devanado. Se permite que el camino se cruce.
A continuación se dan algunos ejemplos (descaradamente tomados de Wikipedia):
Su objetivo es calcular el número de bobinado para una ruta determinada.
Entrada
Se supone que el observador está en el origen (0,0)
.
La entrada es una secuencia finita de puntos (pares de números enteros) de cualquier fuente de entrada deseada que describe la ruta lineal por partes. Puede aplanar esto en una secuencia 1D de números enteros si lo desea, y también puede mezclar la entrada para tomar todas las coordenadas x antes de todas las coordenadas y / viceversa. También puede tomar la entrada como un número complejo a+b i
. La ruta puede auto intersectarse y puede contener segmentos de longitud cero. El primer punto es el inicio de la ruta y se supone que se encuentra en algún lugar del eje x positivo.
Ninguna parte del camino se cruzará con el origen. La ruta siempre estará cerrada (es decir, el primer punto y el punto perdido son los mismos). Su código puede implicar el último punto o requerir que se incluya.
Por ejemplo, dependiendo de su preferencia, ambas entradas especifican el mismo cuadrado:
punto final implícito
1,0
1,1
-1,1
-1,-1
1,-1
punto final explícito
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Salida
La salida es un número entero único para el número de devanado. Esto puede ser a cualquier fuente (valor de retorno, stdout, archivo, etc.).
Ejemplos
Todos los ejemplos tienen el punto final explícitamente definido y se dan como pares x, y. Por cierto, también debería poder alimentar directamente estos ejemplos en cualquier código suponiendo puntos finales definidos implícitamente y las salidas deberían ser las mismas.
1. Prueba básica
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Salida
1
2. Prueba repetida de puntos
1,0
1,0
1,1
1,1
-1,1
-1,1
-1,-1
-1,-1
1,-1
1,-1
1,0
Salida
1
3. Prueba en sentido horario
1,0
1,-1
-1,-1
-1,1
1,1
1,0
Salida
-1
4. Prueba exterior
1,0
1,1
2,1
1,0
Salida
0
5. Bobinado mixto
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
Salida
2
Puntuación
Este es el código de golf; el código más corto gana. Se aplican lagunas estándar. Puede usar cualquier función incorporada siempre que no estén específicamente diseñadas para calcular el número de devanado.
"1-i"
o"1-1i"
?)