Biorąc pod uwagę współrzędne kartezjańskie trzech punktów na płaszczyźnie, znajdź równanie koła przez wszystkie z nich. Trzy punkty nie będą na linii prostej.
Każdy wiersz danych wejściowych do programu będzie zawierać x
i y
współrzędne trzech punktów, w kolejności A(x),A(y),B(x),B(y),C(x),C(y)
. Te współrzędne będą liczbami rzeczywistymi mniejszymi niż 1 000 000 oddzielonymi od siebie spacją.
Rozwiązanie należy wydrukować jako równanie formularza (x-h)^2 + (y-k)^2 = r^2
. Wartości h
, k
, r
mają być drukowane z trzech cyfr po przecinku. Znaki plus i minus w równaniach należy zmieniać w razie potrzeby, aby uniknąć wielu znaków przed liczbą.
Sample Inputs
7.0 -5.0 -1.0 1.0 0.0 -6.0
1.0 7.0 8.0 6.0 7.0 -2.0
Sample Outputs
(x - 3.000)^2 + (y + 2.000)^2 = 5.000^2
(x - 3.921)^2 + (y - 2.447)^2 = 5.409^2
Odpowiedzi:
Python,
176189 znakówWykonuje całą swoją pracę w złożonej płaszczyźnie. Idę matematyki od dołu tej strony .
-c
jest środkiem koła.źródło
C # - 490
Znajduje 2 linie między AB i BC. Następnie sprawdza, gdzie przecinają się przecięcia tych dwóch linii. (Właśnie zauważyłem, że @PeterTaylor wspomniał w swoim komentarzu do @PeterOfTheCorn.)
źródło
Ruby, 192 znaki
Przykłady użycia:
źródło
x
,y
ar
w wywołaniu%
powinno pomóc, jeśli to możliwe.Wolfram Alpha (27)
Mówię: użyj odpowiedniego narzędzia do pracy.
Przykład tutaj .
źródło
JavaScript (299)
Jedynym sposobem, w jaki mogłem pomyśleć o rozwiązaniu tego problemu, było rozwiązanie algebraiczne trzech równań dla trzech niewiadomych, aby znaleźć h, k i r.
Przykład I / O:
7.0 -5.0 -1.0 1.0 0.0 -6.0
->(x-3)²+(y--2)²=5²
1.0 7.0 8.0 6.0 7.0 -2.0
->(x-3.9210526315789473)²+(y-2.4473684210526314)² =5.409159155551175²
Jedyny błąd, który widzę, to to, że jeśli h lub k jest ujemne, to wypisuje
--
zamiast+
.źródło