Data una strada ascii-art e il tempo impiegato per attraversarla, dimmi se stavo accelerando.
unità
La distanza è nell'unità arbitraria di d
. Il tempo è nell'unità arbitraria di t
.
La strada
Ecco una strada semplice:
10=====
Il 10
mezzo 10 d
per t
. Questo è il limite di velocità per la strada. La strada ha 5 =
s, quindi d
è 5. Quindi, se attraverso quella strada in 0,5 t
, ne vado 10 d
per t
, perché 5 / 0,5 = 10. Il limite di velocità di quella strada è 10, quindi rimango entro il limite di velocità.
Ma se attraverso quella strada in 0,25 t
, sono andato 20 d
per t
, perché 5 / 0,25 = 20. Il limite di velocità di quella strada è 10, quindi ho superato di 10 il limite di velocità.
Esempi e calcoli
Nota che l'ingresso 1 è il tempo impiegato per percorrere la strada e l'ingresso 2 è la strada stessa.
Ecco una strada complessa:
Input 1: 1.5
Input 2: 5=====10=====
Il più veloce che avrei potuto (legalmente) percorrere sulla prima strada (i primi 5 =
secondi) è 5 d
per t
. Poiché 5 (distanza) diviso 5 (limite di velocità) è 1, il più veloce che avrei potuto percorrere su quella strada è 1t
.
Sulla strada successiva, il limite di velocità è 10 e anche la distanza è 5, il più veloce che ho potuto attraversare è 0,5 (5/10). Il totale dei tempi minimi risulta in 1,5, il che significa che sono andato esattamente al limite di velocità.
Nota: lo so, avrei potuto andare molto veloce su una strada e molto lentamente su un'altra e ancora incrociare in 1.5, ma presumo il meglio qui.
Un ultimo esempio:
Input 1: 3.2
Input 2: 3.0==========20===
La prima strada è lunga 10 e ha un limite di velocità di 3, quindi il tempo minimo è 3.33333 ... (10 / 3.)
La seconda strada è lunga 3 e ha un limite di velocità di 20, quindi il tempo minimo è 0,15 (3 / 20.)
Il totale dei tempi risulta in 3.483333333 ... L'ho attraversato in 3.2, quindi ho dovuto accelerare da qualche parte.
Gli appunti:
- Devi produrre un valore distinto se indubbiamente sto accelerando, e un altro valore diverso se potrei non esserlo.
- Il tuo programma o funzione potrebbe richiedere input o output per avere una nuova riga finale, ma ti preghiamo di dirlo nella tua richiesta.
- Il tuo primo input sarà la mia velocità. Sarà un float positivo o un numero intero o una stringa.
- Il tuo secondo input sarà la strada. Abbinerà sempre la regex
^(([1-9]+[0-9]*|[0-9]+\.[0-9]+)=+)+\n?$
. Puoi testare potenziali input qui se sei interessato. - È possibile accettare input in 2 parametri di una funzione o programma, in 2 file separati, da STDIN due volte o da una stringa separata da spazio passata a STDIN, una funzione, un file o un parametro della riga di comando.
- Se lo desideri, puoi modificare l'ordine degli input.
- Qualsiasi domanda? Chiedete di seguito nei commenti e buon gioco di golf !
^(([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)