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 KarolinaK
def linear_eq(x1,y1,x2,y2):
xc=(x1+x2)/2
yc=(y1+y2)/2
if(x1-x2==0):
return("y",yc,0)
elif(y1==y2):
return("x",xc,0)
else:
a=(x1-x2)/(y1-y2)
c=-a
d=yc-c*xc
return ("l",c,d)
def ide(a,eq1,eq2):
if(eq1[0]==a):
return eq1
else:
return eq2
def delZero(a):
if(int(a)==a):
return int(a)
else:
return a
def checkio(data):
eq1=linear_eq(int(data[1]),int(data[3]),int(data[7]),int(data[9]))
eq2=linear_eq(int(data[1]),int(data[3]),int(data[13]),int(data[15]))
print(eq1,eq2)
xs=ys="?"
if(eq1[0]=="y" or eq2[0]=="y"):
ys=ide("y",eq1,eq2)[1]
if(eq1[0]=="x" or eq2[0]=="x"):
xs=ide("x",eq1,eq2)[1]
if(xs=="?" or ys=="?"):
if(xs!="?" and ys=="?"):
eq=ide("l",eq1,eq2)
ys=eq[1]*xs+eq[2]
elif(xs=="?" and ys!="?"):
eq=ide("l",eq1,eq2)
xs=(ys-eq[2])/eq[1]
else:
xs=(eq1[2]-eq2[2])/(eq2[1]-eq1[1])
ys=eq1[1]*xs+eq1[2]
r=((int(data[1])-xs)**2+(int(data[3])-ys)**2)**(1/2)
xs=delZero(round(xs,2))
ys=delZero(round(ys,2))
r=delZero(round(r,2))
#replace this for solution
print("(x-"+str(xs)+")^2+(y-"+str(ys)+")^2="+str(r)+"^2")
return "(x-"+str(xs)+")^2+(y-"+str(ys)+")^2="+str(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"
Oct. 24, 2016