diff --git a/constellation.py b/constellation.py old mode 100644 new mode 100755 index 1519451..e4053d9 --- a/constellation.py +++ b/constellation.py @@ -1,21 +1,41 @@ class Star: - def __init__(self, x, y): - self.x = x - self.y = y + def __init__(self): + self.x = None + self.y = None - def distance_sqr(self, other): - return ((self.x - other.x) ** 2) + ((self.y - other.y) ** 2)) + def dist_sqr(self, star): + return (self.x - star.x) ** 2 + (self.y - star.y) ** 2 -def return_key(A): - return A[2] << 32 - -def find_constellation(S): - T = [] +def find_constellations(M, S): for i in range(len(S)): - for j in range(i + 1, len(S)): - T.append( (S[i], S[j], S[i].distance_sqr(S[j])) ) + for j in range(i+1, len(S)): + M[i][j] = Star.dist_sqr(S[i], S[j]) + M[j][i] = M[i][j] + c = 0 + for i in range(len(S)): + D = {} + for j in range(len(S)): + if i == j: + continue + if M[i][j] not in D: + D[M[i][j]] = 1 + else: + D[M[i][j]] += 1 + for k in D: + if D[k] >= 2: + c += int(D[k] * (D[k] - 1) / 2) + return c + +if __name__ == "__main__": + n = int(input()) + M = [[None] * n] * n + S = [] + for i in range(n): + st = input().split() + star = Star() + star.x = int(st[0]) + star.y = int(st[1]) + S.append(star) + print(find_constellations(M, S)) - T.sort(key=return_key) - cnt = 0 - for i in range(len(T)): diff --git a/constellation.txt b/constellation.txt new file mode 100644 index 0000000..19391dd --- /dev/null +++ b/constellation.txt @@ -0,0 +1,7 @@ +6 +5 6 +6 5 +7 6 +6 7 +7 8 +8 7 diff --git a/ttt_tomek.py b/ttt_tomek.py old mode 100644 new mode 100755