用python写一下坐标:
n = 5
# each edge start from first, stop before the last, which is the start of
next edge
edge_1 = (range(n-1), [n-1] * (n-1))
edge_4 = ([0] * (n-1), range(n-1))
edge_2 = ([n-1] * (n-1), range(n-1, 0, -1))
edge_3 = (range(n-1, 0, -1), [0] * (n-1))
# edge_1 to edge_4:
([0, 1, 2, 3], [4, 4, 4, 4])
([4, 4, 4, 4], [4, 3, 2, 1])
([4, 3, 2, 1], [0, 0, 0, 0])
([0, 0, 0, 0], [0, 1, 2, 3])
用了python2因为用3的话range还得转换成list才好打印,有点麻烦
每条边是从头到尾,不包括最后一个
四条边写的时候把1和4写在一起,因为坐标是对称的,比较容易比较。这种代码的边界
和0-index/1-index特别容易出错,对称写容易比较。
写边的时候分别写x和y比较容易,写完了再写个函数把每条边的(list of x, list of
y)转换成[(x1,y1), (x2,y2)...] 的坐标对形式。这个转换函数简单到不能再简单了吧。
把四条边的坐标对按顺序连起来,按从1到n赋值。这个过程也足够简单吧。
所以过程式写法的一个大循环拆成了
1. 写四条边的函数
2. 把边的坐标list转成坐标对
3. 1-2 处理了一圈,调用他们处理每一圈
4. 赋值。可以在最后赋值,或者在第三步赋值。