JavaScript 재미있는 질문: 거북이 경주

黄舟
풀어 주다: 2017-02-04 15:37:24
원래의
994명이 탐색했습니다.

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)를 참고해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!