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

파이썬에서 n번 반전 후 공의 위치를 ​​찾는 프로그램

<시간/>

n개의 공이 있다고 가정합니다. 공은 1,2,3,4,...,n 방식으로 정렬됩니다. 이제 공은 순서가 반대로 되거나 n, n-1, n-2, ......, 2, 1 방식으로 정렬됩니다. 공은 다시 순서대로 반전되며 이번에는 위치 1에서 반전됩니다. n으로, 또는 이제 순서는 n, 1, 2,....., n-1이 됩니다. 이 반전 과정을 n번 반복하고 시작 위치를 오른쪽으로 1칸 이동할 때마다 반복합니다. 이제 역전 후 처음 '인덱스' 위치에 있는 공의 위치를 ​​찾아야 합니다.

따라서 입력이 ball =5, index =2인 경우 출력은 4가 됩니다. 처음에 볼은 1, 2, 3, 4, 5입니다.

그런 다음

5,4,3,2,1
5,1,2,3,4
5,1,4,3,2
5,1,4,2,3

위치 2에 있는 공은 현재 위치 4에 있습니다.

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

  • 인덱스 <(balls / 2)의 하한값이면
    • 2 * 인덱스 + 1을 반환
  • 그렇지 않으면
    • 2 반환 *(볼 - 인덱스 - 1)

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

def solve(balls, index):
   if index < balls // 2:
      return 2 * index + 1
   else:
      return 2 * (balls - index - 1)

print(solve(5, 2))

입력

5, 2

출력

4