Etant donné le chemin d' artiste et le temps qu'il m'a fallu pour le traverser, dites-moi si je conduisais trop vite.
Unités
La distance est dans l'unité arbitraire de d
. Le temps est dans l'unité arbitraire de t
.
La route
Voici une route simple:
10=====
Le 10
moyen 10 d
per t
. C'est la limite de vitesse pour la route. La route a 5 =
s, donc elle d
est 5. Par conséquent, si je traverse cette route dans 0.5t
, je suis allé 10 d
par t
, parce que 5 / 0,5 = 10. La limite de vitesse de cette route est de 10, donc je suis resté dans la limite de vitesse.
Mais si je traverse cette route en 0,25 t
, je suis passé à 20 d
% t
, car 5 / 0,25 = 20. La limite de vitesse de cette route est de 10, donc j’ai dépassé la limite de vitesse.
Exemples et calculs
Notez que l'entrée 1 correspond au temps que j'ai pris pour parcourir la route et l'entrée 2 à la route elle-même.
Voici une route complexe:
Input 1: 1.5
Input 2: 5=====10=====
Le plus rapide que j'aurais pu (légalement) aller sur la première route (les 5 premières =
secondes) est de 5 d
% t
. Étant donné que 5 (distance) divisé par 5 (limite de vitesse) est égal à 1, le plus rapide que j'aurais pu parcourir sur cette route est 1 t
.
Sur la prochaine route, la limite de vitesse est de 10 et la distance est également de 5, le plus rapide que je puisse traverser est de 0,5 (5/10). Le total des temps minimaux donne 1,5, ce qui signifie que je suis allé exactement à la limite de vitesse.
Note: Je sais, j'aurais peut-être été très rapide sur une route et très lent sur une autre et je croisais toujours en 1,5, mais supposons le meilleur ici.
Un dernier exemple:
Input 1: 3.2
Input 2: 3.0==========20===
La première route a une longueur de 10 km et une limite de vitesse de 3, donc le temps minimum est de 3,333333 ... (10/3).
La deuxième route est longue de 3 et a une limite de vitesse de 20, donc le temps minimum est de 0,15 (3/20).
Totaliser les temps en 3.483333333 ... Je l'ai croisé en 3.2, donc je devais être rapide quelque part.
Remarques:
- Vous devez indiquer une valeur distincte si je suis en train d’accélérer, et une autre valeur différente si ce n’est peut-être pas le cas.
- Votre programme ou fonction peut nécessiter une entrée ou une sortie pour avoir une fin de ligne, mais veuillez l'indiquer dans votre soumission.
- Votre première entrée sera ma vitesse. Ce sera un float positif, un entier ou une chaîne.
- Votre deuxième entrée sera la route. Cela correspondra toujours à la regex
^(([1-9]+[0-9]*|[0-9]+\.[0-9]+)=+)+\n?$
. Vous pouvez tester les entrées potentielles ici si vous êtes intéressé. - Vous pouvez entrer une entrée dans 2 paramètres d’une fonction ou d’un programme, dans 2 fichiers séparés, à partir de STDIN deux fois, ou à partir d’une chaîne séparée par des espaces passée à STDIN, une fonction, un fichier ou un paramètre de ligne de commande.
- Si vous le souhaitez, vous pouvez modifier l'ordre des entrées.
- Des questions? Demandez ci-dessous en commentaires et code-golf ing heureux !
^(([1-9]+[0-9]*|(?!0\.0+\b)[0-9]+\.[0-9]+)=+)+\n?$
. (It would have been cleaner with a lookbehind, but then it would need .Net engine)