Course de tortue

Cette semaine, c'est Quentin Ginot qui nous propose un kata sur le sujet suivant : Course de tortue

Briefing du Kata :

Deux tortues nommées Albert et Bérangère doivent faire une course. Albert part avec une vitesse moyenne de 720 km/h. La jeune Bérangère sait qu'elle court plus vite que Albert et, de plus, elle n'a pas fini son chou.

Lorsqu'elle prend enfin le départ, elle peut constater que Albert a une avance de 70 pieds, cependant, sa vitesse est de 850 pieds par heure. Combien de temps lui faudra-t-il pour rattraper Albert ?

Plus généralement, étant donné deux vitesses v1 (vitesse de Albert, nombre entier > 0) et v2 (vitesse de Bérangère, nombre entier > 0) et une avance g (nombre entier > 0), combien de temps faudra-t-il à Bérangère pour rattraper Albert ?

Le résultat sera un tableau [hour, min, sec] qui représente le temps nécessaire en heures, minutes et secondes (arrondi à la seconde inférieure) ou une chaîne de caractères dans certains langages.

Si v1 >= v2, il faudra retourner un tableau vide.

Exemples :

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

Bon courage !


Et sinon, voici une solution proposée par l'auteur en Kotlin :

package tortoise

import kotlin.math.absoluteValue

fun race(v1:Int, v2:Int, g:Int):IntArray {
    return if (v1 >= v2)
        intArrayOf()
    else {
        val speedDifference = v2 - v1
        val timeToCatch = (g / speedDifference.toDouble() * 3600).toInt()        

        val hoursToCatch = timeToCatch / 3600
        val minutesToCatch = (timeToCatch - hoursToCatch*3600) / 60
        val secondsToCatch = timeToCatch - hoursToCatch*3600 - minutesToCatch*60

        intArrayOf(hoursToCatch, minutesToCatch, secondsToCatch)
    }
}

Votre équipe TakiVeille