Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Third solution in Clear category for Three Points Circle by Sim0000
from math import hypot
def checkio(data):
(x1,y1), (x2,y2), (x3,y3) = eval('[' + data + ']')
d = lambda x, y: x*x + y*y
t21 = [2*(x2-x1), 2*(y2-y1), d(x2,y2) - d(x1,y1)]
t31 = [2*(x3-x1), 2*(y3-y1), d(x3,y3) - d(x1,y1)]
det = lambda i, j: t21[i]*t31[j] - t21[j]*t31[i]
a = det(2,1) / det(0,1)
b = det(0,2) / det(0,1)
r = hypot(x1-a, y1-b)
return '(x-{:.3g})^2+(y-{:.3g})^2={:.3g}^2'.format(a, b, round(r, 2))
#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"
March 14, 2014
Comments: