首頁 > web前端 > js教程 > 主體

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]
登入後複製

這題的關鍵有2處:

首先得弄清楚關係,在B追趕A的過程中,A可是一直沒閒著,沒停下腳步的!

所以如果要讓B趕上A,得滿足這個等式:

v1 * time + g = v2 * time

這樣求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趣題:烏龜賽跑的內容,更多相關內容請關注PHP中文網(www.php.cn)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!