在Python中重置多边形到初始状态的程序
假设有一个具有n个顶点、n个翻转轴和n个旋转点的多边形。以下是翻转轴和旋转点的规则
- 如果 n 是奇数,则每个翻转轴仅通过一个顶点和对面边的中点。
- 如果 n 是偶数,则有一半的轴通过一对对面的顶点,另一半通过一对对面的边。
- 两个相邻的轴之间的角度为 360/2n。
现在,我们提供一个旋转多边形。我们有 n 种不同类型的旋转器,其中 k-旋转器以 (360×k)/n 度顺时针旋转多边形的 k 轴。有一个包含多个整数对的输入列表。一对的第一个整数表示是否翻转多边形。如果第一个整数是1,则旋转多边形,如果是2,则翻转多边形。第二个整数是k,如果翻转多边形,则在k轴翻转,否则,如果旋转多边形,则旋转的角度为 360/2n。然后在列表不为空的情况下进行旋转和翻转。
我们的任务是向列表中添加另一个元素,以便将多边形重置为其初始位置。
图片指定两种多边形的旋转轴。
因此,如果输入是 n = 6,input_list = [[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]],则输出将为 (1, 4)
变换后,沿第4轴旋转多边形将使其重置为其初始状态。
为了解决这个问题,我们将遵循以下步骤:
- decision_var := False
- position := 0
- 对于input_list中的每个项目,执行以下操作:
- x := item [0]
- y := item [1]
- 如果 x 和1相同,则
- position := position + y
- 否则
- position := y – position
- decision_var := not(decision_var)
- position := position mod n
- 如果decision_var非零,则
- 返回成对 (2, position)
- 否则,
- 返回成对 (1, n – position)
示例
让我们看看以下实现以获得更好的理解 −
def solve(n, input_list):
decision_var = False
position = 0
for item in input_list:
x = item[0]
y = item[1]
if x == 1:
position += y
else:
position = y - position
decision_var = not decision_var
position = position % n
如果 decision_var:
return (2,position)
else:
return (1,n-位置)
print(solve(6,[[1,2],[1,4],[2,3],[2,5],[1,6]]))
输入
6,[[1,2],[1,4],[2,3],[2,5],[1,6]]
输出
(1,4)