Introdução
Imagine que você está em um plano cartesiano bidimensional e deseja determinar sua posição nele. Você conhece 3 pontos nesse avião e sua distância para cada um deles. Embora seja sempre possível calcular sua posição a partir disso, é muito difícil fazer isso na sua cabeça. Então você decide escrever um programa para isso.
O desafio
Dados 3 pontos e sua distância até eles, produza os cordinatos de sua posição.
- A entrada e a saída podem estar em qualquer formato conveniente, incluindo o uso de números complexos em vez de números reais. Esclareça na sua resposta qual formato você usa.
- Você sempre terá exatamente 3 pontos distintos com a sua distância para você.
- As coordenadas e distâncias serão flutuadas com precisão arbitrária. Sua saída deve estar correta com 3 casas decimais. O arredondamento depende de você. Esclareça na sua resposta.
- Você pode supor que os três pontos não são colineares; portanto, sempre haverá uma solução única.
- Você não tem permissão para forçar a solução.
- Você não pode usar nenhum componente interno que trivialize esse problema específico. No entanto, são permitidos builtins para normas de vetores etc.
Dica para começar:
Pense em um círculo em torno de cada um desses 3 pontos com a distância deles em relação a você como raio.
Regras
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , e a menor contagem de bytes vence. O desempatador é uma inscrição anterior.
Casos de teste
O formato de entrada para um ponto aqui é [[x,y],d]
com x
e y
sendo as coordenadas e d
sendo a distância até esse ponto. Os 3 desses pontos são organizados em uma lista. A saída será x
e, y
em seguida, em uma lista.
[[[1, 2], 1.414], [[1, 1], 2.236], [[2, 2], 1.0]] -> [2, 3] [[[24.234, -13.902], 31.46], [[12.3242, 234.12], 229.953], [[23.983, 0.321], 25.572]] -> [-1.234, 4.567] [[[973.23, -123.221], 1398.016], [[-12.123, -98.001], 990.537], [[-176.92, 0], 912.087]] -> [12.345, 892.234]
Você pode gerar casos de teste adicionais com este programa Pyth . A localização vai na primeira linha da entrada e os 3 pontos estão nas 3 linhas a seguir.
Feliz codificação!
solve
(dadas três equações circulares) trivializar o problema? Eu pensei que era, mas se você estiver bem com essas coisas, eu vou em frente e postá-lo.