Soluție HackerRank pentru Points on a Rectangle, subdomeniul Geometry, în Python 3. Include cerința formatată, exemple, explicația pașilor și cod sursă.
- Problemă: Points on a Rectangle
- Domeniu: Geometry
- Limbaj: Python 3
Challenge: Points on a Rectangle
Scor cont: 30.0 / 30
Submission status: Accepted
Submission score: 1.0
Submission ID: 464726651
Limbaj: python3
Link challenge: https://www.hackerrank.com/challenges/points-on-rectangle/problem
Cerință
You are given q queries where each query consists of a set of n points on a two-dimensional plane (i.e., (x, y)). For each set of points, print `YES` on a new line if all the points fall on the edges (i.e., sides and/or corners) of a [non-degenerate rectangle](https://en.wikipedia.org/wiki/Degeneracy_(mathematics)#Rectangle) which is axis parallel; otherwise, print `NO` instead.
Input Format
The first line contains a single positive integer, q, denoting the number of queries. The subsequent lines describe each query in the following format:
1. The first line contains a single positive integer, n, denoting the number of points in the query.
2. Each line i of the n subsequent lines contains two space-separated integers describing the respective values of x_i and y_i for the point at coordinate (x_i, y_i).
Output Format
For each query, print `YES` on a new line if all n points lie on the edges of some non-degenerate rectangle which is axis parallel; otherwise, print `NO` instead.
Constraints
- 1 ≤ q ≤ 10
- 1 ≤ n ≤ 10
- -10^4 ≤ x, y ≤ 10^4
Cod sursă
#!/bin/python3
import math
import os
import random
import re
import sys
def solve(coordinates):
d = dict(coordinates)
y = d.values()
x = d.keys()
min_x = min(x)
max_x = max(x)
min_y = min(y)
max_y = max(y)
ret = "YES"
for el in coordinates:
if (el[0] > min_x) & (el[0] < max_x) & (el[1] > min_y) & (el[1] < max_y):
ret = "NO"
break
return ret
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
q = int(input().strip())
for q_itr in range(q):
n = int(input().strip())
coordinates = []
for _ in range(n):
coordinates.append(list(map(int, input().rstrip().split())))
result = solve(coordinates)
fptr.write(result + '\n')
fptr.close()
