#include #include #include #include using namespace std; double a,b,c,d; int sign[4]; double f() { double p[4]; int i; p[0]=a; p[1]=b; p[2]=c; p[3]=d; for(i=0; i<4; i++) { p[i]-=i; p[i]+=4*sign[i]; } sort(p,p+4); double ans1=0; double ans2=0; double x1=min(1.0,max(0.0,p[1])); double x2=min(1.0,max(0.0,p[2])); for(i=0; i<4; i++) { // printf("# %f %f %f\n",p[i],x1,fabs(p[i]-x1)); ans1+=fabs(p[i]-x1); ans2+=fabs(p[i]-x2); } return min(ans1,ans2); } double f2() { double p[4]; int i; p[0]=a; p[2]=c-2; p[1]=2-b; p[3]=4-d; for(i=0; i<4; i++) { p[i]+=4*sign[i]; } sort(p,p+4); double ans1=0; double ans2=0; double x1=min(1.0,max(0.0,p[1])); double x2=min(1.0,max(0.0,p[2])); for(i=0; i<4; i++) { ans1+=fabs(p[i]-x1); ans2+=fabs(p[i]-x2); } return min(ans1,ans2); // return abs(x-a)+abs(2-x-b)+abs(2+x-c)+abs(4-x-d); } double pos(double x,double y) { if(y>=x) { return x+y; } return 4-(x+y); } int main() { int n,i; double x,y,p[10]; scanf("%d",&n); while(n--) { for(i=0; i<4; i++) { scanf("%lf%lf",&x,&y); p[i]=pos(x,y); // printf("[%f %f %f %f]\n",p[i],x,y,pos(x,y)); } int index[4]= {0,1,2,3}; double ans=1e9; while(1) { a=p[index[0]]; b=p[index[1]]; c=p[index[2]]; d=p[index[3]]; for(sign[0]=-1; sign[0]<=1; sign[0]++) for(sign[1]=-1; sign[1]<=1; sign[1]++) for(sign[2]=-1; sign[2]<=1; sign[2]++) for(sign[3]=-1; sign[3]<=1; sign[3]++) { ans=min(ans,f()); ans=min(ans,f2()); } // printf("[%f %f %f %f=%f\n",a,b,c,d,ans); if(!next_permutation(index,index+4))///如果没有下一个排列退出循环 break; } printf("%.12f\n",ans); } }