Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 다각형의 둘레를 찾는 프로그램

<시간/>

2D 평면의 단순한 다각형 끝점을 나타내는 정렬된 점 목록이 있다고 가정합니다. 이 다각형의 둘레를 찾아야 합니다.

따라서 입력이 Points =[(0, 0), (0,5), (3, 5), (3,0)]과 같으면 출력은 16이 됩니다.

Python에서 다각형의 둘레를 찾는 프로그램

두 변의 길이가 3이고 두 변의 길이가 5이므로 2*5 + 2*3 =16입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • getInfo() 함수를 정의합니다. x1, y1, x2, y2가 필요합니다.
  • 유클리드 거리인 ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))의 제곱근을 반환
  • (x1, y1)과 (x2, y2) 사이
  • 메인 방법에서 다음을 수행합니다.
  • N :=포인트 크기
  • (첫 번째, 첫 번째) :=포인트[0]
  • (prevx, prevy) :=(firstx, firsty)
  • res :=0
  • 1~N-1 범위의 i에 대해 다음을 수행합니다.
    • (nextx, nexty) :=포인트[i]
    • res :=res + getInfo(prevx, prevy, nextx, nexty)
    • prevx :=nextx
    • prevy :=다음
  • res :=res + getInfo(prevx, prevy, firstx, firsty)
  • 반환 결과

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

from math import sqrt
def getInfo(x1, y1, x2, y2):
   return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))

def solve(points):
   N = len(points)
   firstx, firsty = points[0]
   prevx, prevy = firstx, firsty
   res = 0

   for i in range(1, N):
      nextx, nexty = points[i]
      res = res + getInfo(prevx,prevy,nextx,nexty)
      prevx = nextx
      prevy = nexty
   res = res + getInfo(prevx,prevy,firstx,firsty)
   return res

points = [(0, 0), (0,5), (3, 5), (3,0)]
print(solve(points))

입력

[(0, 0), (0,5), (3, 5), (3,0)]

출력

16.0