Dado un camino ascii-art y el tiempo que me llevó cruzarlo, dime si estaba acelerando.
Unidades
La distancia está en la unidad arbitraria de d. El tiempo está en la unidad arbitraria de t.
El camino
Aquí hay un camino simple:
10=====
Los 10medios 10 dpor t. Ese es el límite de velocidad de la carretera. El camino tiene 5 =s, entonces des 5. Por lo tanto, si cruzo ese camino en 0.5 t, fui 10 dpor t, porque 5 / 0.5 = 10. El límite de velocidad de ese camino es 10, así que me mantuve dentro del límite de velocidad.
Pero si cruzo esa carretera en 0.25 t , fui 20 dpor t, porque 5 / 0.25 = 20. El límite de velocidad de esa carretera es 10, así que fui 10 por encima del límite de velocidad.
Ejemplos y cálculos.
Tenga en cuenta que la entrada 1 es el tiempo que tardé en recorrer el camino, y la entrada 2 es el camino en sí.
Aquí hay un camino complejo:
Input 1: 1.5
Input 2: 5=====10=====
Lo más rápido que podría (legalmente) haber ido en la primera carretera (los primeros 5 =s) es 5 dpor t. Dado que 5 (distancia) dividido por 5 (límite de velocidad) es 1, lo más rápido que pude haber recorrido ese camino es 1 t.
En la siguiente carretera, el límite de velocidad es 10 y la distancia también es 5, el más rápido que pude cruzar es 0.5 (5/10). Totalizar los tiempos mínimos resulta en 1.5, lo que significa que fui exactamente al límite de velocidad.
Nota: Lo sé, podría haber estado yendo muy rápido en un camino y realmente lento en otro y aún cruzar en 1.5, pero asumo lo mejor aquí.
Un último ejemplo:
Input 1: 3.2
Input 2: 3.0==========20===
La primera carretera tiene 10 largos y tiene un límite de velocidad de 3, por lo que el tiempo mínimo es 3.33333 ... (10 / 3.)
El segundo camino es de 3 largos y tiene un límite de velocidad de 20, por lo que el tiempo mínimo es de 0.15 (3/20).
Totalizando los tiempos resulta en 3.483333333 ... Lo crucé en 3.2, así que tuve que acelerar a alguna parte.
Notas:
- Debe generar un valor distinto si indudablemente estoy acelerando, y otro valor diferente si no lo estoy.
- Su programa o función puede requerir entrada o salida para tener una nueva línea final, pero por favor dígalo en su envío.
- Tu primera entrada será mi velocidad. Será un flotante positivo o entero o cadena.
- Su segunda entrada será el camino. Siempre coincidirá con la expresión regular
^(([1-9]+[0-9]*|[0-9]+\.[0-9]+)=+)+\n?$. Puede probar entradas potenciales aquí si está interesado. - Puede ingresar datos en 2 parámetros de una función o programa, en 2 archivos separados, desde STDIN dos veces, o desde una cadena separada por espacios pasada a STDIN, una función, un archivo o un parámetro de línea de comandos.
- Si lo desea, puede cambiar el orden de las entradas.
- ¿Alguna pregunta? Pregunte abajo en comentarios y feliz código de golf ing!
^(([1-9]+[0-9]*|(?!0\.0+\b)[0-9]+\.[0-9]+)=+)+\n?$. (Habría sido más limpio con una mirada hacia atrás, pero luego necesitaría un motor .Net)