用 Python 编写程序将多边形重置为初始状态

pythonserver side programmingprogramming更新于 2026/1/31 9:48:17

假设有一个多边形,它有 n 个顶点、n 个翻转轴和 n 个旋转点。以下是翻转轴和旋转点的正确表达式

  • 如果 n 为奇数,则每个翻转轴仅经过一个顶点和对边的中间。
  • 如果 n 为偶数,则一半轴经过一对对边。
  • 以下两个轴的角度为 360/2n。

现在,我们旋转提供的多边形。我们有 n 种不同类型的旋转器,k 旋转器将多边形在轴 k 处顺时针旋转 (360 x k)/n 度。有一个包含几对整数的列表输入列表。一对中的第一个整数表示多边形是否要翻转或旋转。如果第一个整数为 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

   if decision_var:
      return (2, position)
   else:
      return (1, n - position)

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)

相关文章


有用资源