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

Python에서 한 점을 다른 점으로 변환할 수 있는지 여부를 확인하는 프로그램

<시간/>

시작점(sx, sy)과 목표점(tx, ty)이 있다고 가정하면 시작점에서 끝점까지 일련의 이동이 있는지 확인해야 합니다. 여기에서 이동은 점(x, y)을 가져 와서 (x, x+y) 또는 (x+y, y)로 변환하는 것으로 구성됩니다.

따라서 입력이 (sx, sy) =(1,1) (tx, ty) =(4,5)와 같으면 출력은 True가 됩니다. 이는 (1,1)을 (2, 1), 그 다음 (3,1), (4,1), 다음 (4,5).

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

  • solve() 함수를 정의합니다. sx, sy, tx, ty가 필요합니다.

  • sx> tx 또는 sy> ty이면

    • 거짓을 반환

  • sx가 tx와 같으면

    • return(ty-sy) mod sx는 0과 같습니다.

  • sy가 ty와 같으면

    • return(tx - sx) mod sy는 0과 같습니다.

  • 해결(sx, sy, tx-ty, ty) 또는 해결(sx, sy, tx, ty-tx)

    반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

def solve(sx, sy, tx, ty):
   if sx > tx or sy > ty:
      return False
   if sx == tx:
      return (ty-sy)%sx == 0
   if sy == ty:
      return (tx - sx)%sy == 0
   return solve(sx, sy, tx-ty, ty) or solve(sx, sy, tx, ty-tx)

(sx, sy) = (1,1)
(tx, ty) = (4,5)
print(solve(sx, sy, tx, ty))

입력

(1,1), (4,5)

출력

True