Hora de desenterrar suas notas antigas de trigonometria do ensino médio! O desafio é resolver os lados e ângulos desconhecidos de diferentes triângulos. E como é habitual no código de golfe, o menor código de trabalho vence.
Este não é um problema trivial; minha implementação de referência em python atualmente tem 838 837 caracteres, mas tenho certeza de que você poderá usar soluções muito menores.
Além disso, se você estiver preso, esta seção da Wikipedia deve ajudá-lo: Triângulo: Computando os lados e os ângulos .
Entrada
O triângulo a seguir mostra os nomes dos lados e ângulos usados neste desafio. Observe que os lados são minúsculos e os ângulos são maiúsculos.
A entrada é fornecida como seis valores separados por espaço, stdin
como argumentos de linha de comando ou (sua escolha). Os seis valores correspondem aos lados a, b, c
e ângulos A, B, C
. Os lados desconhecidos são dados como pontos de interrogação ( ?
). Os ângulos de entrada e saída devem estar em radianos. Você pode assumir que os valores de entrada estão corretos (não é necessário validar nada). Você também pode assumir que o triângulo de entrada não é degenerado e que todos os lados e ângulos são diferentes de zero.
A entrada de exemplo a seguir informa que lado a
é 8
, lado b
é 12
e ângulo A
é 0.5
radianos:
8 12 ? 0.5 ? ?
Resultado
A saída é fornecida no mesmo formato da entrada - seis números separados por espaço ativados stdout
. A única exceção é quando não é possível resolver o triângulo de entrada - a sequência "No solution"
deve ser gravada stdout
. Se duas soluções são possíveis, ambas são produzidas com uma nova linha entre elas.
A seguir, é apresentada a saída da entrada acima:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
A saída não é necessária para ter muita precisão, mas pelo menos algumas casas decimais são necessárias.
Regras
- A entrada é lida
stdin
ou argumentos de linha de comando - A saída é gravada em
stdout
- Se duas soluções são possíveis com a entrada fornecida, produza
- Se houver pouca informação para obter uma ou duas soluções claras, considere um
"No solution"
caso - Nenhum código embutido ou pré-existente pode ser usado (é claro que você pode usar funções trigonométricas, mas não "
solveTriangle
" ou coisa parecida) - O código mais curto vence
Casos de teste
Dentro 3 4 5 ? ? ?
Fora 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
Dentro ? 4 ? 0.64 0.92 1.57
Fora 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
Dentro ? ? 5 ? 0.92 ?
Fora No solution
Dentro ? ? 5 ? 0.92 1.57
Fora 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
Dentro 8 12 ? 0.5 ? ?
Fora (duas soluções)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
Dentro 8 12 ? ? .5 ?
Fora 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837