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)

更新於: 2021年10月23日

131 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.