Dalam balapan di mana pembalap berkeliling setidaknya satu putaran lintasan melengkung, posisi awal untuk setiap pembalap terhuyung, sehingga setiap pembalap menempuh jarak yang sama di lintasan (jika tidak, pembalap di jalur terdalam akan memiliki keuntungan besar. ).
Mengingat panjang sumbu utama dan minor (atau semi-mayor dan semi-minor, jika Anda mau) dari lintasan elips dan jumlah lajur di lintasan, output jarak dari titik awal lajur terdalam jalur yang setiap lajur harus terhuyung.
Spesifikasi
- Setiap jalur adalah elips dengan sumbu semi mayor 5 unit lebih panjang dari jalur terpendek berikutnya. Untuk kesederhanaan, asumsikan bahwa jalur memiliki lebar 0.
- Jalur terdalam selalu dimulai pada 0, dan setiap titik awal lainnya adalah bilangan bulat positif lebih besar dari atau sama dengan titik awal sebelumnya.
- Input dan output mungkin dalam format yang mudah dan masuk akal.
- Masukan akan selalu berupa bilangan bulat.
- Anda harus menghitung keliling lintasan ke dalam 0,01 unit dari nilai aktual.
- Keluaran harus dibulatkan ke bilangan bulat terdekat (lantai).
- Garis finish adalah titik awal untuk pembalap terdalam. Hanya ada satu putaran dalam lomba.
- Panjang sumbu diukur menggunakan jalur terdalam trek.
- Mengeluarkan 0 untuk offset jalur paling dalam adalah opsional.
Uji Kasus
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
Kasus uji ini dibuat dengan skrip Python 3 berikut, yang menggunakan perkiraan keliling elips yang dirancang oleh Ramanujan:
#!/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:]])))
Perkiraan yang digunakan adalah:
Akhirnya, berikut adalah diagram yang membantu untuk memahami perhitungan offset:
h**5
, yang jauh di bawah 0.01
untuk berbagai nilai.