Problem
A rule looks like this:
|
|
This means this means point A
is located northeast of point B
.
|
|
means that point A
is southwest of C
.
Given a list of rules, check if the sum of the rules validate.
Examples
Example 1:
|
|
Example 2:
|
|
Solution
Method 1 - BFS
To solve this problem, we need to deduce and verify relative positions of points based on given directional rules. Here’s the approach you can use:
- Graph Representation of Directions:
- Treat this as a graph problem where each point is a vertex and each directional rule is a directed edge with specific constraints.
- Define Constraints:
- Use vectors to represent each directional constraint. For example:
N
(North) can be represented as(0, 1)
.NE
(Northeast) can be represented as(1, 1)
.- Similarly, define vectors for other directions
NW
,S
,SW
,E
,W
,SE
.
- Use vectors to represent each directional constraint. For example:
- Translation to Graph Problem:
- Initialize a dictionary for each point to store its relative position.
- Use vectors to establish constraints and check for consistency.
- Cycle Detection:
- Check for any contradictory cycles within the graph of constraints.
Code
|
|
|
|
Complexity
- ⏰ Time complexity:
O(V + E)
whereV
is the number of vertices (points) andE
is the number of edges (rules). - 🧺 Space complexity:
O(V + E)
, for storing the graph and position mappings.