Un gatto quasi senza massa viene lasciato cadere nello spazio (non preoccuparti, con una tuta spaziale e tutto il resto) nel punto (x, y, z)con velocità (vx, vy, vz). C'è un pianeta fisso, infinitamente denso (con volume di 0) nel punto (0, 0, 0)e attira oggetti a distanza rcon accelerazione 1/r^2. Secondo la gravità newtoniana, dove va l'oggetto dopo il tempo t?
Quasi senza massa in questo caso significa che stai fornendo il valore di lim (mass --> 0) <position of cat>. La massa è influenzata dalla gravità del pianeta, ma il pianeta non è influenzato dalla gravità del gatto. In altre parole, il corpo centrale è fisso.
Questo è in qualche modo simile a Code Golf: qual è il destino dell'astronave? [versione a virgola mobile] , ma questo è diverso perché misura l'accuratezza.
È possibile implementare una soluzione basata su una simulazione, che deve essere eseguita in meno di 3 secondi, oppure è possibile implementare un programma che fornisce un valore esatto (deve essere eseguito anche in meno di 3 secondi). Vedi i dettagli del punteggio di seguito. Se si implementa una simulazione, non deve essere esatto, ma il punteggio sarà inferiore a causa dell'imprecisione.
Ingresso : x y z vx vy vz t, non necessariamente interi che rappresentano rispettivamente x, y, z coordinate, velocità nelle direzioni x, y, z e indicazioni e tempo. È garantito che la velocità del gatto è strettamente inferiore alla velocità di fuga a quell'altitudine. L'input può essere preso da qualsiasi luogo, inclusi i parametri di una funzione. Il programma deve essere eseguito in meno di tre secondi sul mio laptop t < 2^30, il che significa che, se si esegue una simulazione, è necessario regolare di conseguenza il proprio timestep. Se stai pensando di superare il limite di 3 secondi per ogni caso di test, assicurati che ci sia un parametro sintonizzabile che possa renderlo più accurato / meno accurato per i guadagni di velocità, in modo che io possa farlo funzionare in tre secondi sul mio computer.
Uscita : x y zla posizione dopo il tempo t.
Poiché il problema dei due corpi può essere risolto perfettamente, in teoria è possibile ottenere una risposta perfetta e corretta.
Punteggio : per ogni caso di test, l'errore è definito come la distanza tra l'output e l'output "vero". L'output vero è definito come quello generato dallo snippet del test case. Se l'errore è inferiore a 10^(-8), l'errore viene arrotondato per difetto a zero. Il tuo punteggio è l'errore medio su 100 (o più) casi di test casuali. Se scrivi una risposta perfettamente accurata, dovresti ottenere un punteggio di 0; il punteggio più basso vince e i legami verranno interrotti dalla lunghezza del codice.
Casi di prova :
1 0 0 0 -1 0 1000000000 --> 0.83789 -0.54584 0
In questo caso, l'orbita è perfettamente circolare con periodo 2 * pi, quindi dopo aver girato 159154943 volte, il gatto finisce a circa (0,83789, -0,54584). Questo non è un caso di test su cui verrà testato il codice; se invii una risposta perfettamente accurata, tuttavia, potresti voler testarla su questo.
Lo snippet di seguito genera casi di test aggiuntivi casuali e verrà utilizzato per giudicare i contributi; fammi sapere se c'è un bug con questo:
tviene dato in unità di tempo, qualunque cosa sia, e la velocità utilizzerà la stessa unità. Che si tratti di secondi o ore, la risposta sarà la stessa.
nearly massless catBene, quale sarebbe la massa esatta del gatto? Dovremmo usare solo 0come valore per la massa di questo gatto?
tespresso in secondi? In tal caso, la velocità sarebbe data in unità al secondo o qualcosa di più piccolo?