Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình đặt lại một đa giác về trạng thái ban đầu của nó bằng Python

Giả sử, có một đa giác với n đỉnh, n trục lật và n điểm quay. Những điều sau đúng đối với trục lật và điểm quay

  • Nếu n là số lẻ, mỗi trục lật chỉ đi qua một đỉnh và giữa của cạnh đối diện.
  • Nếu n chẵn, một nửa số trục đi qua một cặp đỉnh đối diện và nửa trục còn lại đi qua một cặp cạnh đối diện.
  • Hai trục sau có góc 360 / 2n.

Bây giờ, chúng tôi xoay đa giác được cung cấp. Chúng ta có n loại trục quay khác nhau, một bộ quay k quay đa giác theo trục k theo chiều kim đồng hồ một góc (360 x k) / n độ. Có một danh sách đầu vào danh sách chứa một số cặp số nguyên. Số nguyên đầu tiên của một cặp biểu thị nếu đa giác được lật hoặc xoay. Nếu số nguyên đầu tiên là 1 thì đa giác được xoay, nếu là 2 thì đa giác được lật. Số nguyên thứ hai là k, nếu lật đa giác thì nó sẽ lật ở trục k hoặc ngược lại, nếu xoay nó thì nó sẽ quay một góc 360 / 2n. Sau đó, các thao tác xoay và lật được thực hiện trong khi danh sách không có sản phẩm nào.

Nhiệm vụ của chúng ta ở đây là thêm một phần tử khác vào danh sách để đa giác có thể được đặt lại về vị trí ban đầu của nó.

Chương trình đặt lại một đa giác về trạng thái ban đầu của nó bằng Python

Hình ảnh chỉ định trục quay của hai loại đa giác.

Vì vậy, nếu đầu vào là n =6, input_list =[[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]], thì đầu ra sẽ là (1, 4)

Sau các phép biến đổi, một phép quay dọc theo trục thứ 4 sẽ đặt lại đa giác về vị trí ban đầu của nó.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • quyết định_var:=Sai
  • vị trí:=0
  • đối với mỗi mục trong input_list, hãy thực hiện
    • x:=item [0]
    • y:=item [1]
    • nếu x giống 1, thì
      • vị trí:=vị trí + y
    • nếu không thì
      • vị trí:=y - vị trí
      • quyết định_var:=không (quyết định_var)
  • vị trí:=vị trí mod n
  • nếu quyết định_var khác 0, thì
    • trả về một cặp (2, vị trí)
  • nếu không,
    • trả về một cặp (1, n - vị trí)

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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]]))

Đầu vào

6, [[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]]

Đầu ra

(1, 4)