A와 B라는 두 마리의 거북이가 경주를 하고 있습니다.
A는 시속 720피트의 속도로 이동하고 있습니다.
어린 B는 A가 자신보다 느리게 달려야 한다는 것을 알기 때문에 여전히 침착하게 야채를 먹고 있습니다.
B가 달리기 시작하면 A는 이미 70피트 앞에 있지만 B의 속도는 시속 850피트이므로 확실히 따라잡을 수 있습니다.
실례합니다. B가 A를 따라잡는 데 얼마나 걸리나요?
더 일반적인 상황: 두 가지 속도 v1(A의 속도, >0의 정수), v2(B의 속도, >0의 정수) 및 선행 간격 g(g> 0) B가 A를 따라잡는 데 얼마나 걸리나요?
결과는 배열이어야 합니다. [h, mn, s], h, mn, s는 시, 분, 초를 나타냅니다.
v1 >= v2와 같이 B가 A를 따라잡을 수 없는 비정상적인 상황이 발생하면 null이 직접 반환됩니다.
예:
race(720, 850, 70) // => [0, 32, 18] race(80, 91, 37) // => [3, 21, 49]
이 질문에는 두 가지 핵심 사항이 있습니다.
먼저 B가 A를 쫓는 동안 A는 관계를 명확히 해야 합니다. 한 번도 유휴 상태가 아니었고 멈추지 않았습니다!
그래서 B가 A를 따라잡기를 원한다면 다음 방정식을 만족해야 합니다.
v1 * time + g = v2 * time
찾는 것은 매우 간단합니다. 하지만 가장 중요한 것은 시간을 어떻게 시간, 분, 초로 나누느냐 하는 것입니다.
내 접근 방식은 시계를 먼저 찾고 나머지를 기준으로 분을 찾은 다음 나머지를 기준으로 초를 찾는 것입니다.
function race(v1, v2, g) { var h = -1; var mn = -1; var s = -1; var remainder; var speedGap = v2 - v1; if(speedGap > 0){ remainder = g % speedGap; h = parseInt(g / speedGap); mn = parseInt(60 * remainder / speedGap); remainder = remainder * 60 % speedGap; s = parseInt(remainder * 60 / speedGap); return [h, mn, s]; } return null; }
위 내용은 JavaScript Fun Question: Turtle Race 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!