Bei Rennen, bei denen die Rennfahrer mindestens eine Kurve einer gekrümmten Strecke zurücklegen, sind die Startpositionen für jeden Rennfahrer gestaffelt, sodass jeder Rennfahrer die gleiche Strecke auf der Strecke zurücklegt (andernfalls hätte der Rennfahrer auf der innersten Spur einen großen Vorteil ).
Ausgehend von der Länge der Haupt- und Nebenachse (oder der Halb-Haupt- und Halb-Nebenachse, wenn Sie dies vorziehen) einer elliptischen Spur und der Anzahl der Spuren in der Spur geben Sie die Abstände vom Startpunkt der innersten Spur für jede Spur aus sollte gestaffelt sein.
Spezifikationen
- Jede Spur ist eine Ellipse mit halbrunden Achsen, die 5 Einheiten länger sind als die nächstkürzere Spur. Nehmen Sie der Einfachheit halber an, dass die Fahrspuren eine Breite von 0 haben.
- Die innerste Spur beginnt immer bei 0, und jeder zweite Startpunkt ist eine positive ganze Zahl, die größer oder gleich dem vorherigen Startpunkt ist.
- Die Ein- und Ausgabe kann in jedem geeigneten und vernünftigen Format erfolgen.
- Die Eingaben sind immer Ganzzahlen.
- Sie müssen den Umfang der Spur auf 0,01 Einheiten vom tatsächlichen Wert aus berechnen.
- Die Ausgaben sind auf die nächste Ganzzahl (Floored) abzurunden.
- Die Ziellinie ist der Startpunkt für den innersten Rennfahrer. Es gibt nur eine Runde im Rennen.
- Die Längen der Achsen werden auf der innersten Spur der Spur gemessen.
- Die Ausgabe der 0 für den Versatz der innersten Spur ist optional.
Testfälle
Format: a, b, n -> <list of offsets, excluding innermost lane>
20, 10, 5 -> 30, 61, 92, 124
5, 5, 2 -> 31
15, 40, 7 -> 29, 60, 91, 121, 152, 183
35, 40, 4 -> 31, 62, 94
Diese Testfälle wurden mit dem folgenden Python 3-Skript generiert, das eine von Ramanujan entwickelte Annäherung des Umfangs einer Ellipse verwendet:
#!/usr/bin/env python3
import math
a = 35 # semi-major axis
b = 40 # semi-minor axis
n = 4 # number of lanes
w = 5 # spacing between lanes (constant)
h = lambda a,b:(a-b)**2/(a+b)**2
lane_lengths = [math.pi*(a+b+w*i*2)*(1+3*h(a+w*i,b+w*i)/(10+math.sqrt(4-3*h(a+w*i,b+w*i)))) for i in range(n)]
print("{}, {}, {} -> {}".format(a, b, n, ', '.join([str(int(x-lane_lengths[0])) for x in lane_lengths[1:]])))
Die verwendete Annäherung ist:
Schließlich ist hier ein hilfreiches Diagramm zum Verständnis der Berechnungen der Offsets:
h**5, die 0.01für einen weiten Bereich von Werten weit darunter liegt.

