Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Three Points Circle by wojtek96
import math
n = 0
def checkio(data):
global n
x = []
y = []
result = ""
for i in data:
if i.isdigit():
if n == 0:
x.append(int(i))
n = n+1
else:
y.append(int(i))
n = n-1
x1 = x[0]; x2 = x[1]; x3 = x[2]; y1 = y[0]; y2 = y[1]; y3 = y[2]
x = 0.5 * (x2 * x2 * y3 + y2 * y2 * y3 - x1 * x1 * y3 + x1 * x1 * y2 - y1 * y1 * y3 + y1 * y1 * y2 + y1 * x3 * x3 + y1 * y3 * y3 - y1 * x2 * x2 - y1 * y2 * y2 - y2 * x3 * x3 - y2 * y3 * y3) / (y1 * x3 - y1 * x2 - y2 * x3 - y3 * x1 + y3 * x2 + y2 * x1)
y = 0.5 * (-x1 * x3 * x3 - x1 * y3 * y3 + x1 * x2 * x2 + x1 * y2 * y2 + x2 * x3 * x3 + x2 * y3 * y3 - x2 * x2 * x3 - y2 * y2 * x3 + x1 * x1 * x3 - x1 * x1 * x2 + y1 * y1 * x3 - y1 * y1 * x2) / (y1 * x3 - y1 * x2 - y2 * x3 - y3 * x1 + y3 * x2 + y2 * x1)
r = math.sqrt(((x1 - x)**2)+(y1 - y)**2)
if x % 1 < 0.01:
x = int(x)
else:
x = round(x,2)
if y % 1 < 0.01:
y = int(y)
else:
y = round(y,2)
if r % 1 < 0.01:
r = int(r)
else:
r = round(r,2)
result = "(x-" + str(x) + ")^2+(y-" + str(y) + ")^2=" + str(r) + "^2"
return result
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio("(2,2),(6,2),(2,6)") == "(x-4)^2+(y-4)^2=2.83^2"
assert checkio("(3,7),(6,9),(9,7)") == "(x-6)^2+(y-5.75)^2=3.25^2"
Dec. 15, 2016