#include <iostream>
#include <vector>
#include <set>
using namespace std;
bool isSquare(vector<int>& x, vector<int>& y) {
// 存储所有点对之间的距离平方
set<int> distances;
// 计算所有点对之间的距离平方
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
if(i != j) {
int dist = (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]);
distances.insert(dist);
}
}
}
// 正方形应该只有两种距离:边长和对角线长
return distances.size() == 2;
}
int main() {
int T;
cin >> T;
while(T--) {
// 读取输入的坐标
string xs, ys;
cin >> xs >> ys;
vector<int> x(4), y(4);
for(int i = 0; i < 4; i++) {
x[i] = xs[i] - '0';
y[i] = ys[i] - '0';
}
cout << (isSquare(x, y) ? "Yes" : "No") << endl;
}
return 0;
}
import java.util.*;
public class Main {
static boolean isSquare(int[] x, int[] y) {
// 计算相邻边的距离平方
int d1 = (x[0]-x[1])*(x[0]-x[1]) + (y[0]-y[1])*(y[0]-y[1]);
int d2 = (x[1]-x[2])*(x[1]-x[2]) + (y[1]-y[2])*(y[1]-y[2]);
int d3 = (x[2]-x[3])*(x[2]-x[3]) + (y[2]-y[3])*(y[2]-y[3]);
int d4 = (x[3]-x[0])*(x[3]-x[0]) + (y[3]-y[0])*(y[3]-y[0]);
// 判断四条边是否相等
return d1 == d2 && d2 == d3 && d3 == d4;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
while(T-- > 0) {
String xs = sc.next();
String ys = sc.next();
int[] x = new int[4];
int[] y = new int[4];
for(int i = 0; i < 4; i++) x[i] = xs.charAt(i) - '0';
for(int i = 0; i < 4; i++) y[i] = ys.charAt(i) - '0';
System.out.println(isSquare(x, y) ? "Yes" : "No");
}
}
}
def dis(a, b):
return (a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1])
def solve(xs, ys):
a = [int(xs[0]), int(ys[0])]
b = [int(xs[1]), int(ys[1])]
d = [int(xs[2]), int(ys[2])]
c = [int(xs[3]), int(ys[3])]
# 四条边相等,且为直角
if dis(a, b) == dis(b, c) and dis(a, b) == dis(d, a) and dis(b, c) == dis(c, d):
print("Yes")
else:
print("No")
T = int(input())
for i in range(T):
xs = input()
ys = input()
solve(xs, ys)