Python程式重置多邊形到初始狀態
假設,有一個具有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)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP