2012-04-12 2 views
2

자물쇠의 한 위치에서 다른 위치까지 거리 또는 틱을 찾아야하는 경우에 문제가 있습니다. 예를 들어 숫자 0-39의 조합 잠금을 가정하면 38에서 10으로 이동하여 38에서 10으로 이동하는 데 걸리는 틱 수인 12를 얻고 싶습니다.이 설정은 (38 + x) mod 40 = 10 (modulus 연산으로 인해 x를 분리 할 수있는 방법이 없음). 누구든지 간단한 공식을 만들어 38와 10 사이에 12 개의 틱이 있다는 것을 알 수 있습니까? 나는 조건부 분기를 사용하여이를 수행하는 방법을 알고 있지만 가능한 경우 수식을 사용하는 것을 선호합니다.조합 잠금에서 거리를 계산하는 효과적인 방법

+0

나는 단위 원처럼 자물쇠를 다루고 trig 함수를 사용하여이 작업을 수행 할 수 있다고 생각하지만, 여전히 정확히 _how _...에 작업하고 있습니다. –

+0

허. 그것이 효과가 있으면 멋질 것입니다! –

답변

2

두 가지 경우가 있습니다.

  1. "범위 내에서"A 거리
  2. 의 거리 "오버 플로우"

당신은 모두를 계산하고 최소를 선택해야합니다.

min((to-from) mod 40, (from-to) mod 40) 

업데이트 : 이전 버전 (예를 들어 1 ~ 25) 모든 경우에 작동하지 않았다. 현재 버전은 항상 틱의 가장 싼 금액을 반환하지만 방향은 없습니다 (서명되지 않은).

+0

내가 찾고있는 것. 고맙습니다! –

+0

@Jonners 작성 했습니까? 분기를 지정하지 않았지만 사용하지 않고 도망 갈 수 있다고 생각하지 않습니다. min 함수는 작성하기가 쉽습니다. –

+0

내가 다른 방향으로 가면 두 가지를 최대한 활용하는 것이 합리적일까요? –

관련 문제