Statistics

Problem Statement for "Segments"

Problem Statement

You are given two line segments on the plane. Each segment is parallel to either the X axis or the Y axis. Your task is to figure out how the segments intersect and return one of the following strings:

  • "NO", if the segments do not intersect
  • "POINT", if the segments' intersection forms a point
  • "SEGMENT", if the segments' intersection forms a line segment

The segments will be given as two int[]s s1 and s2. Each of them will contain four integers x1, y1, x2, y2 (in that order) where (x1, y1), (x2, y2) are segment endpoints.

Definition

Class:
Segments
Method:
intersection
Parameters:
int[], int[]
Returns:
String
Method signature:
String intersection(int[] s1, int[] s2)
(be sure your method is public)

Constraints

  • Each of s1 and s2 will contain exactly four elements
  • All integers in s1 and s2 will be between -1000 and 1000, inclusive
  • Each segment will be parallel to either the X axis or the Y axis

Examples

  1. {0, 0, 0, 1}

    {1, 0, 1, 1}

    Returns: "NO"

    The segments are parallel and there is no intersection.

  2. {0, 0, 0, 1}

    {0, 1, 0, 2}

    Returns: "POINT"

    The segments are located on the same line and have only one common point (0,1).

  3. {0, -1, 0, 1}

    {-1, 0, 1, 0}

    Returns: "POINT"

    The segments intersect at point (0,0).

  4. {0, 0, 2, 0}

    {1, 0, 10, 0}

    Returns: "SEGMENT"

    The segments have a common line segment from (1,0) to (2,0).

  5. {5, 5, 5, 5}

    {6, 6, 6, 6}

    Returns: "NO"

    These are two different points.

  6. { 5, 5, 5, 8 }

    { 5, 4, 5, 9 }

    Returns: "SEGMENT"

  7. {10, 0, -10, 0}

    {5, 0, -5, 0}

    Returns: "SEGMENT"

    The segments have a common line segment from (-5,0) to (5,0).

  8. {800, 1000, 800, 850}

    {1000, 1000, -1000, 1000}

    Returns: "POINT"

  9. {10, 20, 10, 20}

    {20, 10, 20, 10}

    Returns: "NO"

  10. {0, 0, 0, 0}

    {10, 0, 0, 0}

    Returns: "POINT"

  11. {0, 0, 0, 10}

    {0, 0, 0, 0}

    Returns: "POINT"

  12. {-788, -799, -600, -799}

    {-100, -799, -1, -799}

    Returns: "NO"

  13. {-778, -799, -600, -799}

    {-778, -799, -600, -799}

    Returns: "SEGMENT"

  14. {-788, -799, -600, -799}

    {-700, -799, -600, -799}

    Returns: "SEGMENT"

  15. {-600, -799, -788, -799}

    {-601, -799, -788, -799}

    Returns: "SEGMENT"

  16. {19, -19, 20, -19}

    {20, 99, 20, 1000}

    Returns: "NO"

  17. {-5, 10, 78, 10}

    {100, 10, 79, 10}

    Returns: "NO"

  18. {-5, 10, 78, 10}

    {-999, 10, -10, 10}

    Returns: "NO"

  19. {10, -5, 10, 78}

    {10, -90, 10, -80}

    Returns: "NO"

  20. {10, -5, 10, 78}

    {10, 90, 10, 80}

    Returns: "NO"

  21. {123, 1000, 123, 433}

    {888, 123, 751, 123}

    Returns: "NO"

  22. {987, 10, 987, 20}

    {-987, 10, -987, 20}

    Returns: "NO"

  23. {50, 60, 100, 60}

    {75, -1000, 75, 1000}

    Returns: "POINT"

  24. {50, 60, 100, 60}

    {50, -1000, 50, 1000}

    Returns: "POINT"

  25. {50, 60, 100, 60}

    {100, 1000, 100, -1000}

    Returns: "POINT"

  26. {50, 60, 100, 60}

    {110, 60, 90, 60}

    Returns: "SEGMENT"

  27. {50, 60, 100, 60}

    {110, 60, 60, 60}

    Returns: "SEGMENT"

  28. {50, 60, 100, 60}

    {110, 60, 50, 60}

    Returns: "SEGMENT"

  29. {50, 60, 100, 60}

    {110, 60, 40, 60}

    Returns: "SEGMENT"

  30. {0, 0, 0, 0 }

    {0, 0, 0, -5 }

    Returns: "POINT"

  31. {0, 0, 2, 0 }

    {1, 0, 10, 0 }

    Returns: "SEGMENT"

  32. {0, 0, 0, 1 }

    {0, 1, 0, 2 }

    Returns: "POINT"

  33. {0, 0, 0, 0 }

    {0, 0, 0, 0 }

    Returns: "POINT"

  34. {-10, 0, 10, 0 }

    {-10, 0, -10, 10 }

    Returns: "POINT"

  35. {0, 1, 0, 0 }

    {0, -10, 0, 10 }

    Returns: "SEGMENT"

  36. {10, 0, -10, 0 }

    {5, 0, -5, 0 }

    Returns: "SEGMENT"

  37. {1, 1, 1, 3 }

    {1, 2, 1, 3 }

    Returns: "SEGMENT"

  38. {-1000, -1000, 1000, -1000 }

    {-1000, -1000, 1000, -1000 }

    Returns: "SEGMENT"

  39. {0, 0, 0, 0 }

    {-1, 0, 1, 0 }

    Returns: "POINT"

  40. {0, 0, 2, 0 }

    {0, 0, 2, 0 }

    Returns: "SEGMENT"

  41. {0, -1, 0, 1 }

    {1, -1, 0, -1 }

    Returns: "POINT"

  42. {0, 1, 0, 10 }

    {0, 1, 0, 10 }

    Returns: "SEGMENT"

  43. {1, 1, 1, 2 }

    {0, 2, 0, 4 }

    Returns: "NO"

  44. {1, 1, 1, 3 }

    {1, 1, 1, 3 }

    Returns: "SEGMENT"

  45. {0, -1, 0, 1 }

    {-1, 0, 1, 0 }

    Returns: "POINT"

  46. {0, 0, 0, 1 }

    {0, 2, 0, 3 }

    Returns: "NO"

  47. {0, 0, 10, 0 }

    {10, 0, 0, 0 }

    Returns: "SEGMENT"

  48. {4, 0, 4, 0 }

    {5, 0, 3, 0 }

    Returns: "POINT"

  49. {1, 1, 1, 2 }

    {0, 1, 2, 1 }

    Returns: "POINT"

  50. {3, 3, 3, 3 }

    {4, 4, 4, 4 }

    Returns: "NO"

  51. {1, 2, 1, 5 }

    {1, 5, 1, 9 }

    Returns: "POINT"

  52. {10, 0, 9, 0 }

    {5, 0, -5, 0 }

    Returns: "NO"

  53. {1, 2, 1, 4 }

    {1, 2, 1, -2 }

    Returns: "POINT"

  54. {0, 0, 0, 2 }

    {0, 1, 0, 1 }

    Returns: "POINT"

  55. {0, 0, 1, 0 }

    {0, 12, 1, 12 }

    Returns: "NO"

  56. {0, 5, 10, 5 }

    {10, 5, 20, 5 }

    Returns: "POINT"

  57. {0, 10, 0, 2 }

    {1, 5, 10, 5 }

    Returns: "NO"

  58. {0, 1, 0, 2 }

    {0, 0, 0, 1 }

    Returns: "POINT"

  59. {10, 0, -10, 0 }

    {0, 0, 0, 0 }

    Returns: "POINT"

  60. {2, 3, 2, 5 }

    {2, 7, 2, 10 }

    Returns: "NO"

  61. {0, 0, 0, 1 }

    {0, 0, -1, 0 }

    Returns: "POINT"

  62. {0, -1, 0, 1 }

    {-100, 0, -101, 0 }

    Returns: "NO"

  63. {2, 2, 2, 2 }

    {2, 1, 2, 3 }

    Returns: "POINT"

  64. {0, 0, 10, 0 }

    {0, 0, 10, 0 }

    Returns: "SEGMENT"

  65. {0, 3, 0, 10 }

    {0, 0, 10, 0 }

    Returns: "NO"

  66. {0, 0, 0, 3 }

    {0, 5, 0, 6 }

    Returns: "NO"

  67. {2, 1, 0, 1 }

    {1, 0, 1, 3 }

    Returns: "POINT"

  68. {0, -10, 0, 10 }

    {0, -10, 10, -10 }

    Returns: "POINT"

  69. {1, 1, 1, 1 }

    {2, 1, 3, 1 }

    Returns: "NO"


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: