Heim  >  Artikel  >  Web-Frontend  >  Lustige JavaScript-Frage: Schildkrötenrennen

Lustige JavaScript-Frage: Schildkrötenrennen

黄舟
黄舟Original
2017-02-04 15:37:24995Durchsuche

Zwei Schildkröten namens A und B rennen um die Wette.

A fährt mit einer Geschwindigkeit von 720 Fuß pro Stunde.

Junge B weiß, dass A langsamer laufen muss als es, also isst es immer noch ruhig Gemüse.

Als B anfängt zu laufen, stellt es fest, dass A bereits 70 Fuß voraus ist, die Geschwindigkeit von B jedoch 850 Fuß pro Stunde beträgt, sodass es definitiv aufholen kann.

Entschuldigung, wie lange wird es dauern, bis B A eingeholt hat?

Eine allgemeinere Situation: Gegeben sind zwei Geschwindigkeiten v1 (die Geschwindigkeit von A, eine ganze Zahl von >0), v2 (die Geschwindigkeit von B, eine ganze Zahl von >0) und eine führende Lücke g (g> ; 0), wie lange dauert es, bis B A einholt?

Das Ergebnis sollte ein Array sein, [h, mn, s], h, mn, s repräsentiert Stunden, Minuten und Sekunden.

Wenn eine abnormale Situation auftritt, z. B. v1 > = v2, sodass B A niemals einholen kann, wird null direkt zurückgegeben.

Zum Beispiel:

race(720, 850, 70) // => [0, 32, 18]  
race(80, 91, 37)   // => [3, 21, 49]

Es gibt zwei wichtige Punkte in dieser Frage:

Zunächst müssen wir die Beziehung zwischen B und A klären , A. Ich war noch nie untätig und habe nie aufgehört!

Wenn Sie also möchten, dass B zu A aufschließt, müssen Sie diese Gleichung erfüllen:

v1 * Zeit + g = v2 * Zeit

Es ist sehr einfach zu finden Die Zeit auf diese Weise zu berechnen, aber das Wichtigste ist, wie man die Zeit in Stunden, Minuten und Sekunden aufteilt.

Mein Ansatz besteht darin, zuerst die Uhr zu ermitteln, die Minuten basierend auf dem Rest zu ermitteln und dann die Sekunden basierend auf dem Rest zu ermitteln.

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;  
}

Das Obige ist der Inhalt von JavaScript Fun Question: Turtle Race. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn