Twoim zadaniem jest zaprogramowanie funkcji matematycznej s
, która pobiera niepusty zbiór skończony A
punktów na płaszczyźnie 2D i generuje wynik nieokrągłości, s(A)
który spełnia następujące właściwości:
- Pozytywna definitywność : jeśli istnieje okrąg lub linia prosta, która zawiera wszystkie punkty
A
, tos(A) = 0
. Inaczejs(A) > 0
Surowotność: Jest przejmująca względem nieujemnych liczb rzeczywistych, co oznacza, że dla każdej nieujemnej liczby rzeczywistej
r
istnieje skończony podzbiórA
płaszczyzny, taki, żes(A) = r
.Niezmienność tłumaczenia:
s
jest niezmiennas(A) = s(A + v)
dla każdego wektorav
i dla wszystkichA
.Niezmienność
s
skali: niezmiennik skali, jeślis(A) = s(A * t)
dla wszystkicht≠0
i dla wszystkichA
.Ciągłość.
s
uważa się za ciągły, jeśli funkcjaf(p) := s(A ∪ {p})
(odwzorowanie punktup
na liczbę rzeczywistą) jest ciągła przy użyciu standardowej wartości bezwzględnej liczb rzeczywistych i standardowej normy euklidesowej w punktach płaszczyzny.
Intuicyjnie mówiąc, ten wynik nieokrągłości można uznać za coś podobnego do współczynnika korelacji w regresji liniowej.
Detale
Twoja funkcja teoretycznie musi działać w rzeczywistości, ale dla celów tego wyzwania możesz użyć liczb zmiennoprzecinkowych jako zamiennika. Podaj wyjaśnienie swojego zgłoszenia i argument, dlaczego te pięć nieruchomości ma zastosowanie. Jako dane wejściowe możesz wziąć dwie listy współrzędnych lub listę krotek lub podobnych formatów. Możesz założyć, że żaden punkt na wejściu nie jest powtarzany, tzn. Wszystkie punkty są unikalne.
s
nie jest unikalne. Jedyną rzeczą, dla której możesz podać przykłady, s(A) = 0
jest trywialne przy użyciu pierwszej właściwości.