Learn how to a build a cloud-first strategyRegister Now

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 99
  • Last Modified:

How Can I DO That

Consider a two dimensional co-ordinate system with two axes; X & Y. This system is identified by positive integer co-ordinates. Meaning, every valid point in this system is represented by two values (x, y) where 0 < x,y <100.
You are given an input set of lines, specified by the co-ordinates of the two end-points.
Write a program to identify all closed shapes created by the specified lines.
Input Format (the program should accept this simple text file called "input.txt" placed in the classpath):
A1, B1; C1, D1
A2, B2; C2, D2

An, Bn; Cn, Dn
Expected Output (based on actual values of the input lines):
There are two triangles and 1 square based on the input.
Triangle 1  with vertices (a1,b1; a2, b2; a3,b3)
Triangle 2 with vertices (a5,b5; a6, b6; a7, b7)
Square 1 with vertices (a8, b8; a9, b9; a10, b10; a11, b11)
The input data may be such that some shapes overlap.
You don't have to find shapes formed by intersection of two shapes. For example, if a square and triangle overlap such that there is another small triangle formed at the intersection, you don't have to report that.
For the sake of scope, report only the following shapes, if any - triangle, any quadrilateral, pentagon. 

Open in new window

Naren Kumar
Naren Kumar
2 Solutions
Phillip BurtonCommented:
Is this a homework task?
For a brute force approach you could have a table for each of the 10201 possible points listing all the points to which it is connected by a line.

You could then take the triple, quadruple, and pentuple closures of that list.
Mike TomlinsonMiddle School Assistant TeacherCommented:
You could also do it by building a graph where each node contains the two endpoints and they point to other nodes that have a point in common.  Then traverse the graph and count the number of edges you traveled before coming to a point you've already seen (meaning it is closed).  It simply specifies triangle, quadrilateral and pentagon (not regular pentagon or specific quads like parallelogram, rectangle or square) so you don't need to worry about angles or anything.

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now