Sua tarefa é programar uma função matemática s
, que recebe um conjunto finito não vazio A
de pontos no plano 2D e gera uma pontuação de incircularidade s(A)
que satisfaz as seguintes propriedades:
- Definição positiva : se houver um círculo ou uma linha reta que contenha todos os pontos de
A
, entãos(A) = 0
. De outra formas(A) > 0
Surjectividade: É um adjetivo para os números reais não negativos, ou seja, para cada número real não negativo,
r
existe um subconjunto finitoA
do plano, de modo ques(A) = r
.Invariância da tradução:
s
é invariável à tradução ses(A) = s(A + v)
para cada vetorv
e para todosA
.Invariância da escala:
s
é invariável à escala, se fors(A) = s(A * t)
para todost≠0
e para todosA
.Continuidade.
s
é considerado contínuo se a funçãof(p) := s(A ∪ {p})
(mapear o ponto ap
para um número real) for contínua usando o valor absoluto padrão nos números reais e a norma euclidiana padrão nos pontos do plano.
Intuitivamente, esse escore de falta de circularidade pode ser pensado como algo semelhante ao coeficiente de correlação na regressão linear.
Detalhes
Sua função na teoria precisa funcionar em reais, mas, para o objetivo desse desafio, você pode usar números de ponto flutuante como substituto. Forneça uma explicação do seu envio e um argumento sobre o motivo dessas cinco propriedades. Você pode usar duas listas de coordenadas ou uma lista de tuplas ou formatos semelhantes como entrada. Você pode assumir que nenhum ponto na entrada é repetido, ou seja, todos os pontos são únicos.
s
não é único. A única coisa para a qual você pode fazer exemplos é do s(A) = 0
que é trivial fazer usando a primeira propriedade.