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

파이썬에서 포인트 목록이 직선을 이루는지 확인하는 프로그램

<시간/>

데카르트 평면에 목록 좌표가 있다고 가정하면 좌표가 직선 세그먼트를 형성하는지 여부를 확인해야 합니다.

따라서 입력이 좌표 =[(5, 5),(8, 8),(9, 9)]와 같으면 출력은 True가 됩니다. 이러한 점이 기울기가 1인 선분을 형성하기 때문입니다.

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

  • (x0, y0) :=좌표[0]
  • (x1, y1) :=좌표[1]
  • 좌표 목록의 크기 - 1까지 범위 2의 i에 대해
    • (x, y) :=좌표[i]
    • (x0 - x1) * (y1 - y)가 (x1 - x) * (y0 - y1)과 같지 않으면
      • 거짓을 반환
  • 참 반환

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

class Solution:
   def solve(self, coordinates):
      (x0, y0), (x1, y1) = coordinates[0], coordinates[1]
      for i in range(2, len(coordinates)):
         x, y = coordinates[i]
         if (x0 - x1) * (y1 - y) != (x1 - x) * (y0 - y1):
            return False
      return True
ob = Solution()
coordinates = [[5, 5],[8, 8],[9, 9]]
print(ob.solve(coordinates))

입력

[[5, 5],[8, 8],[9, 9]]

출력

True