Related Articles
Check if the given 2-D points form T-shape or not
• Difficulty Level : Medium
• Last Updated : 21 Jan, 2021

Given the coordinates of 5 2-dimensional points, check if they form a closed T shape. Print ‘Yes’ if they form T shape and ‘No’ otherwise. Note: Coordinates should be distinct and integers.
There are 4-types of T shaped formations possible according to the given conditions:

Examples:

```Input: [[7, 5], [8, 5], [6, 5], [7, 7], [7, 6]]
Output: Yes

Input: [[0, 0], [1, 0], [2, 0], [1, -1], [1, -2]]
Output: Yes```

Approach:

1. Consider the first point in the given list as the center (x, y) (i.e intersection of the two lines that form a T-shape).
2. Then check if all the points which are needed to form a T-shape of which (x, y) are the center are present in the list of given points or not.
3. Check this for all 4 possible patterns of T-shape.

Below is the implementation of the above approach:

## Python3

 `# Python3 code to check if given 5``# 2-D points form T-shape or not` `# Import the function to initialize the``# dictionary with a specific value``from` `collections ``import` `defaultdict` `# This function checks if the points``# form T-shape pointing up`  `def` `isUpDirected(point, x, y):` `    ``return` `(point[(x``-``1``, y)] ``and``            ``point[(x, y)] ``and``            ``point[(x ``+` `1``, y)] ``and``            ``point[(x, y``-``1``)] ``and``            ``point[(x, y``-``2``)])` `# This function checks if the points``# form T-shape pointing down`  `def` `isDownDirected(point, x, y):` `    ``return` `(point[(x``-``1``, y)] ``and``            ``point[(x, y)] ``and``            ``point[(x ``+` `1``, y)] ``and``            ``point[(x, y ``+` `1``)] ``and``            ``point[(x, y ``+` `2``)])` `# This function checks if the points``# form T-shape pointing left`  `def` `isLeftDirected(point, x, y):` `    ``return` `(point[(x, y ``+` `1``)] ``and``            ``point[(x, y)] ``and``            ``point[(x, y``-``1``)] ``and``            ``point[(x ``+` `1``, y)] ``and``            ``point[(x ``+` `2``, y)])` `# This function checks if the points``# form T-shape pointing right`  `def` `isRightDirected(point, x, y):` `    ``return` `(point[(x, y ``+` `1``)] ``and``            ``point[(x, y)] ``and``            ``point[(x, y``-``1``)] ``and``            ``point[(x``-``1``, y)] ``and``            ``point[(x``-``2``, y)])`  `# This function checks if given points``# form a T-shape or not``def` `solve(grid):` `    ``# Initialize the dictionary with False value``    ``point ``=` `defaultdict(``lambda``: ``False``)``    ``flag ``=` `False` `    ``for` `i ``in` `range``(``len``(grid)):` `        ``# Assign True value to the points which``        ``# are present in the given list``        ``point[(grid[i][``0``], grid[i][``1``])] ``=` `True` `    ``for` `i ``in` `range``(``len``(grid)):` `        ``# Check if the given points form any of the``        ``# 4 possible T-shaped formations``        ``if` `isUpDirected(point, grid[i][``0``], grid[i][``1``]) ``or``           ``isDownDirected(point, grid[i][``0``], grid[i][``1``]) ``or``            ``isLeftDirected(point, grid[i][``0``], grid[i][``1``]) ``or``            ``isRightDirected(point, grid[i][``0``], grid[i][``1``]):` `            ``flag ``=` `True``            ``break` `    ``if` `flag ``=``=` `True``:``        ``return` `'Yes'``    ``else``:``        ``return` `'No'`  `print``(solve([[``7``, ``5``], [``8``, ``5``], [``6``, ``5``], [``7``, ``7``], [``7``, ``6``]]))``print``(solve([[``0``, ``0``], [``1``, ``0``], [``2``, ``0``], [``1``, ``-``1``], [``1``, ``-``2``]]))`
Output:
```Yes
Yes```

Time Complexity: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live and Geeks Classes Live USA

My Personal Notes arrow_drop_up