Su tarea es programar una función matemática s
, que toma un conjunto finito A
de puntos no vacíos en el plano 2D, y genera un puntaje de circularidad s(A)
que satisface las siguientes propiedades:
- Definitividad positiva : si hay un círculo o una línea recta que contiene todos los puntos de
A
, entoncess(A) = 0
. De otra maneras(A) > 0
Surjectividad: es surjective a los números reales no negativos, lo que significa que para cada número real no negativo
r
hay un subconjunto finitoA
del plano tal ques(A) = r
.Invariancia de traducción:
s
es invariante de traducción sis(A) = s(A + v)
para cada vectorv
y para todosA
.Invarianza de escala:
s
es invariante de escala, sis(A) = s(A * t)
para todost≠0
y para todosA
.Continuidad.
s
se dice que es continua si la funciónf(p) := s(A ∪ {p})
(mapear un puntop
a un número real) es continua usando el valor absoluto estándar en los números reales y la norma euclidiana estándar en los puntos del plano.
Hablando intuitivamente, esta puntuación de falta de circularidad puede considerarse como algo similar al coeficiente de correlación en la regresión lineal.
Detalles
Su función en teoría tiene que funcionar en los reales, pero para el propósito de este desafío puede usar números de coma flotante como sustituto. Proporcione una explicación de su envío y un argumento de por qué se mantienen esas cinco propiedades. Puede tomar dos listas de coordenadas o una lista de tuplas o formatos similares como entrada. Puede suponer que no se repite ningún punto en la entrada, es decir, todos los puntos son únicos.
s
que no es único. Lo único para lo que podría hacer ejemplos es para s(A) = 0
qué es trivial hacerlo usando la primera propiedad.