用 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)
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

