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