Sagen Sie mir bei einer ascii-art Straße und der Zeit, die ich brauchte, um sie zu überqueren, ob ich beschleunigt habe.
Einheiten
Entfernung ist in der willkürlichen Einheit von d
. Die Zeit ist in der willkürlichen Einheit von t
.
Die Straße
Hier ist eine einfache Straße:
10=====
Das 10
bedeutet 10 d
per t
. Das ist das Tempolimit für die Straße. Die Straße hat 5 =
s, also d
ist es 5. Wenn ich diese Straße in 0,5 überquere t
, bin ich 10 d
pro gefahren t
, weil 5 / 0,5 = 10. Das Tempolimit dieser Straße ist 10, also bin ich innerhalb des Tempolimits geblieben.
Aber wenn ich diese Straße in 0,25 überquere t
, habe ich 20 d
pro gefahren t
, weil 5 / 0,25 = 20. Das Tempolimit dieser Straße ist 10, also bin ich 10 über das Tempolimit gefahren.
Beispiele und Berechnungen
Beachten Sie, dass Eingabe 1 die Zeit ist, die ich zum Befahren der Straße benötigt habe, und Eingabe 2 die Straße selbst ist.
Hier ist eine komplexe Straße:
Input 1: 1.5
Input 2: 5=====10=====
Die schnellste, die ich (legal) auf der ersten Straße hätte fahren können (die ersten 5 =
s), ist 5 d
per t
. Da 5 (Distanz) geteilt durch 5 (Geschwindigkeitsbegrenzung) 1 ist, ist die schnellste, die ich auf dieser Straße hätte fahren können, 1 t
.
Auf der nächsten Straße ist das Tempolimit 10 und die Distanz 5, die schnellste, die ich überqueren konnte, ist 0,5 (5/10). Die Summe der Mindestzeiten ergibt 1,5, was bedeutet, dass ich genau das Tempolimit erreicht habe.
Hinweis: Ich weiß, dass ich auf einer Straße sehr schnell und auf einer anderen sehr langsam gefahren bin und immer noch die 1,5 überquert habe, aber nehme hier das Beste an.
Ein letztes Beispiel:
Input 1: 3.2
Input 2: 3.0==========20===
Die erste Straße ist 10 km lang und hat ein Tempolimit von 3, die Mindestzeit beträgt also 3.33333 ... (10 / 3.)
Die zweite Straße ist 3 lang und hat ein Tempolimit von 20, die Mindestzeit beträgt also 0,15 (3/20).
Die Summe der Zeiten ergibt 3.483333333 ... Ich habe es in 3.2 überschritten, also musste ich irgendwo beschleunigen.
Anmerkungen:
- Sie müssen einen eindeutigen Wert ausgeben, wenn ich zweifellos beschleunige, und einen anderen Wert, wenn ich nicht beschleunige.
- Für Ihr Programm oder Ihre Funktion ist möglicherweise eine Eingabe oder Ausgabe erforderlich, um einen nachgestellten Zeilenumbruch zu erhalten.
- Ihre erste Eingabe wird meine Geschwindigkeit sein. Es wird ein positiver Gleitkommawert oder eine Ganzzahl oder eine Zeichenfolge sein.
- Ihre zweite Eingabe wird die Straße sein. Es wird immer mit dem regulären Ausdruck übereinstimmen
^(([1-9]+[0-9]*|[0-9]+\.[0-9]+)=+)+\n?$
. Bei Interesse können Sie hier mögliche Eingaben testen. - Sie können 2 Parameter einer Funktion oder eines Programms in 2 separaten Dateien, zweimal aus STDIN oder aus einer durch Leerzeichen getrennten Zeichenfolge, die an STDIN übergeben wird, einer Funktion, einer Datei oder einem Befehlszeilenparameter eingeben.
- Wenn Sie möchten, können Sie die Reihenfolge der Eingaben ändern.
- Irgendwelche Fragen? Fragen Sie unten in Kommentaren und glücklich Code- Golfing!
^(([1-9]+[0-9]*|(?!0\.0+\b)[0-9]+\.[0-9]+)=+)+\n?$
. (Es wäre sauberer mit einem Lookbehind gewesen, aber dann würde es .NET-Engine benötigen)