的绕组数是净逆时针转观察者必须作出遵循给定闭合路径的整数。请注意,任何顺时针旋转都会对绕组数计数为负。路径允许自相交。
下面给出了一些示例(从Wikipedia中无耻地摘录):
您的目标是计算给定路径的绕组数。
输入值
假定观察者在原点(0,0)
。
输入是来自任何所需输入源的有限点序列(整数对类似),描述了分段线性路径。如果需要,可以将其展平为一维整数序列,也可以使输入模糊不清,以在所有y坐标之前取所有x坐标,反之亦然。您也可以将输入作为复数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
输出量
输出是绕组号的单个整数。这可以指向任何源(返回值,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"
?)