Um gato quase sem massa é jogado no espaço (não se preocupe, com um traje espacial e tudo) no ponto (x, y, z)
com velocidade (vx, vy, vz)
. Existe um planeta fixo infinitamente denso (com volume de 0) no ponto (0, 0, 0)
e atrai objetos à distância r
com aceleração 1/r^2
. De acordo com a gravidade newtoniana, para onde o objeto vai depois do tempo t
?
Quase sem massa, neste caso, significa que você está produzindo o valor de lim (mass --> 0) <position of cat>
. A massa é afetada pela gravidade do planeta, mas o planeta não é afetado pela gravidade do gato. Em outras palavras, o corpo central é fixo.
Isso é um pouco semelhante ao Code Golf: Qual é o destino da nave espacial? [versão de ponto flutuante] , mas isso é diferente porque está medindo a precisão.
Você pode implementar uma solução com base em uma simulação, que deve ser executada em menos de 3 segundos, OU você pode implementar um programa que fornece um valor exato (também deve ser executado em menos de 3 segundos). Veja os detalhes da pontuação abaixo. Se você implementar uma simulação, ela não precisa ser exata, mas sua pontuação será mais baixa devido à imprecisão.
Entrada : x y z vx vy vz t
, não necessariamente inteiros representando x, y, z coordenadas, velocidade em x, y, z e indicações e tempo, respectivamente. É garantido que a velocidade do gato é estritamente menor que a velocidade de escape nessa altitude. A entrada pode ser obtida de qualquer lugar, incluindo parâmetros para uma função. O programa deve ser executado em menos de três segundos no meu laptop t < 2^30
, o que significa que, se você estiver executando uma simulação, deverá ajustar o timestep de acordo. Se você planeja atingir o limite de 3 segundos para cada caso de teste, verifique se existe um parâmetro ajustável que possa torná-lo mais preciso / menos preciso para ganhos de velocidade, para que eu possa executá-lo em três segundos no meu computador.
Saída : x y z
, a posição após o tempo t
.
Como o problema de dois corpos pode ser resolvido perfeitamente, é possível, em teoria, obter uma resposta perfeita e correta.
Pontuação : para qualquer caso de teste, o erro é definido como a distância entre a saída e a saída "true". A saída verdadeira é definida como aquela que o trecho de caso de teste gera. Se o erro for menor que 10^(-8)
, o erro será arredondado para zero. Sua pontuação é o erro médio em 100 (ou mais) casos de teste aleatórios. Se você escrever uma resposta perfeitamente precisa, receberá uma pontuação 0; a pontuação mais baixa vence e os empates serão interrompidos pelo tamanho do código.
Casos de teste :
1 0 0 0 -1 0 1000000000 --> 0.83789 -0.54584 0
Nesse caso, a órbita é perfeitamente circular com o período 2 * pi; portanto, depois de circular 159154943 vezes, o gato termina em aproximadamente (0,83789, -0,54584). Este não é um caso de teste em que seu código será testado; se você enviar uma resposta perfeitamente precisa, no entanto, convém testá-la.
O trecho abaixo gera casos de teste adicionais aleatórios e será usado para julgar envios; deixe-me saber se há um erro com isso:
t
é dado em tempo unitário, seja o que for, e a velocidade usará a mesma unidade. Seja em segundos ou horas, a resposta será a mesma.
nearly massless cat
Bem, qual seria a massa exata do gato? Devemos apenas usar 0
como um valor para a massa deste gato?
t
dado em segundos? Nesse caso, a velocidade seria dada em unidades por segundo ou algo menor?