在Python中重置多边形到初始状态的程序

在Python中重置多边形到初始状态的程序

假设有一个具有n个顶点、n个翻转轴和n个旋转点的多边形。以下是翻转轴和旋转点的规则

  • 如果 n 是奇数,则每个翻转轴仅通过一个顶点和对面边的中点。
  • 如果 n 是偶数,则有一半的轴通过一对对面的顶点,另一半通过一对对面的边。
  • 两个相邻的轴之间的角度为 360/2n。

现在,我们提供一个旋转多边形。我们有 n 种不同类型的旋转器,其中 k-旋转器以 (360×k)/n 度顺时针旋转多边形的 k 轴。有一个包含多个整数对的输入列表。一对的第一个整数表示是否翻转多边形。如果第一个整数是1,则旋转多边形,如果是2,则翻转多边形。第二个整数是k,如果翻转多边形,则在k轴翻转,否则,如果旋转多边形,则旋转的角度为 360/2n。然后在列表不为空的情况下进行旋转和翻转。

我们的任务是向列表中添加另一个元素,以便将多边形重置为其初始位置。

在Python中重置多边形到初始状态的程序

图片指定两种多边形的旋转轴。

因此,如果输入是 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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程