Die Wicklungszahl ist die ganze Zahl der Nettoumdrehungen gegen den Uhrzeigersinn, die ein Beobachter gemacht haben muss, um einem bestimmten geschlossenen Pfad zu folgen. Beachten Sie, dass alle Umdrehungen im Uhrzeigersinn negativ für die Wicklungszahl sind. Der Pfad darf sich selbst kreuzen.
Einige Beispiele (schamlos aus Wikipedia entnommen) sind nachfolgend aufgeführt:
Ihr Ziel ist es, die Windungszahl für einen bestimmten Pfad zu berechnen.
Eingang
Es wird angenommen, dass sich der Beobachter am Ursprung befindet (0,0).
Die Eingabe ist eine endliche Folge von Punkten (paarweise ganze Zahlen) aus einer beliebigen Eingabequelle, die den stückweisen linearen Pfad beschreibt. Falls gewünscht, können Sie dies zu einer 1D-Folge von Ganzzahlen reduzieren und die Eingabe so verschieben, dass alle x-Koordinaten vor allen y-Koordinaten verwendet werden. Sie können die Eingabe auch als komplexe Zahl annehmen a+b i. Der Pfad kann sich selbst schneiden und Segmente mit der Länge Null enthalten. Der erste Punkt ist der Anfang des Pfades und liegt vermutlich irgendwo auf der positiven x-Achse.
Kein Teil des Pfades schneidet den Ursprung. Der Pfad wird immer geschlossen (dh der erste und der verlorene Punkt sind gleich). Ihr Code kann entweder den letzten Punkt implizieren oder erfordern, dass er enthalten ist.
Abhängig von Ihrer Präferenz geben beide Eingaben beispielsweise dasselbe Quadrat an:
impliziter Endpunkt
1,0
1,1
-1,1
-1,-1
1,-1
expliziter Endpunkt
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Ausgabe
Die Ausgabe ist eine einzelne Ganzzahl für die Wicklungsnummer. Dies kann eine beliebige Quelle sein (Rückgabewert, Standardausgabe, Datei usw.).
Beispiele
In allen Beispielen ist der Endpunkt explizit definiert und als x, y-Paare angegeben. Im Übrigen sollten Sie in der Lage sein, diese Beispiele auch direkt in Codes einzugeben, die implizit definierte Endpunkte voraussetzen, und die Ausgaben sollten dieselben sein.
1. Grundtest
1,0
1,1
-1,1
-1,-1
1,-1
1,0
Ausgabe
1
2. Wiederholter Punkttest
1,0
1,0
1,1
1,1
-1,1
-1,1
-1,-1
-1,-1
1,-1
1,-1
1,0
Ausgabe
1
3. Test im Uhrzeigersinn
1,0
1,-1
-1,-1
-1,1
1,1
1,0
Ausgabe
-1
4. Außerhalb des Tests
1,0
1,1
2,1
1,0
Ausgabe
0
5. Gemischte Wicklung
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
Ausgabe
2
Wertung
Das ist Code Golf; kürzester Code gewinnt. Es gelten Standardlücken. Sie können alle integrierten Funktionen verwenden, sofern diese nicht speziell für die Berechnung der Wicklungsnummer entwickelt wurden.

"1-i"oder"1-1i"?)