#!/usr/bin/env python3 # Challenge 123 # # TASK #2 > Square Points # Submitted by: Mohammad S Anwar # You are given coordinates of four points i.e. # (x1, y1), (x2, y2), (x3, y3) and (x4, y4). # # Write a script to find out if the given four points form a square. # # Example # Input: x1 = 10, y1 = 20 # x2 = 20, y2 = 20 # x3 = 20, y3 = 10 # x4 = 10, y4 = 10 # Output: 1 as the given coordinates form a square. # # Input: x1 = 12, y1 = 24 # x2 = 16, y2 = 10 # x3 = 20, y3 = 12 # x4 = 18, y4 = 16 # Output: 0 as the given coordinates doesn't form a square. import sys class Point(): def __init__(self, x, y): self.x = x self.y = y # square of distance between two points def dist_sq(p, q): return (p.x - q.x) * (p.x - q.x) + \ (p.y - q.y) * (p.y - q.y) # check if four points form a square def is_square(p1, p2, p3, p4): d2 = dist_sq(p1, p2) d3 = dist_sq(p1, p3) d4 = dist_sq(p1, p4) if d2 == 0 or d3 == 0 or d4 == 0: return False elif d2 == d3 and 2 * d2 == d4 and 2 * dist_sq(p2, p4) == dist_sq(p2, p3): return True elif d3 == d4 and 2 * d3 == d2 and 2 * dist_sq(p3, p2) == dist_sq(p3, p4): return True elif d2 == d4 and 2 * d2 == d3 and 2 * dist_sq(p2, p3) == dist_sq(p2, p4): return True else: return False p1 = Point(int(sys.argv[1]), int(sys.argv[2])) p2 = Point(int(sys.argv[3]), int(sys.argv[4])) p3 = Point(int(sys.argv[5]), int(sys.argv[6])) p4 = Point(int(sys.argv[7]), int(sys.argv[8])) if is_square(p1, p2, p3, p4): print(1) else: print(0)