O problema:
Dado um conjunto não vazio de pontos no plano cartesiano, encontre o menor círculo que os inclua todos ( link da Wikipedia ).
Esse problema é trivial se o número de pontos for três ou menos (se houver um ponto, o círculo terá um raio de zero; se houver dois pontos, o segmento de linha que une os pontos será o diâmetro do círculo; se houver três pontos (não colineares), é possível obter a equação de um círculo que toca todos eles se formarem um triângulo não obtuso, ou um círculo que toca apenas dois pontos e encerra o terceiro se o triângulo for obtuso). Portanto, para o desafio deste desafio, o número de pontos deve ser maior que três.
O desafio:
- Entrada: uma lista de 4 ou mais pontos não colineares. Os pontos devem ter coordenadas X e Y; coordenadas podem ser flutuantes. Para facilitar o desafio, dois pontos não devem compartilhar a mesma coordenada X.
Por exemplo:[(0,0), (2,1), (5,3), (-1,-1)]
- Saída: uma tupla de valores,
(h,k,r)
tais que é a equação do menor círculo que envolve todos os pontos.
Regras:
- Você pode escolher qualquer método de entrada adequado ao seu programa.
- A saída deve ser impressa
STDOUT
ou retornada por uma função. - Os idiomas "normais", de uso geral, são preferidos, mas qualquer esolang é aceitável.
- Você pode assumir que os pontos não são colineares.
- Isso é código-golfe, então o menor programa em bytes vence. O vencedor será selecionado uma semana após o lançamento do desafio.
- Inclua o idioma que você usou e o comprimento em bytes como cabeçalho na primeira linha da sua resposta:
# Language: n bytes
- Inclua o idioma que você usou e o comprimento em bytes como cabeçalho na primeira linha da sua resposta:
Casos de teste:
- 1:
- Entrada:
[(-8,0), (3,1), (-6.2,-8), (3,9.5)]
- Saída:
[-1.6, 0.75, 9.89]
- Entrada:
- 2:
- Entrada:
[(7.1,-6.9), (-7,-9), (5,10), (-9.5,-8)]
- Saída:
[-1.73, 0.58, 11.58]
- Entrada:
- 3:
- Entrada:
[(0,0), (1,2), (3,-4), (4,-5), (10,-10)]
- Saída:
[5.5, -4, 7.5]
- Entrada:
- 4:
- Entrada:
[(6,6), (-6,7), (-7,-6), (6,-8)]
- Saída:
[0, -0.5, 9.60]
- Entrada:
Feliz golfe !!!