Statistics

Problem Statement for "Symmetry"

Problem Statement

A line of symmetry is a line through the cartesian plane such that if you reflect everything from one side of the line to the other, you still have the same image. For example, if the x-axis is a line of symmetry, it means that for every point (x,y) there is also a point (x,-y).

Your task is, given a list of points, determine how many such lines exist.

Definition

Class:
Symmetry
Method:
countLines
Parameters:
String[]
Returns:
int
Method signature:
int countLines(String[] points)
(be sure your method is public)

Constraints

  • Each element of points will be formatted as a list of x,y pairs " ...", where there is exactly one space between every two terms, and both and are integers.
  • and will both be between -10,000 and 10,000, inclusive.
  • Each point will be unique.
  • There will be between 2 and 200 points, inclusive.

Examples

  1. {"0 100","100 0","0 0","100 100","51 51"}

    Returns: 1

  2. {"0 100","100 0","0 0","100 100","51 50"}

    Returns: 1

  3. {"0 100","100 0","0 0","100 100","50 50"}

    Returns: 4

  4. {"0 100","100 0","0 0","100 100","51 52"}

    Returns: 0

  5. {"1 0","0 1","-1 0","0 -1"}

    Returns: 4

  6. {"1 0","0 1","-1 0","0 -1","1 1","1 -1","-1 1","-1 -1"}

    Returns: 4

  7. {"0 0","2 1","1 3","-1 2"}

    Returns: 4

  8. {"0 100","100 0","0 0","100 100","51 51"}

    Returns: 1

  9. {"0 0","1 1","-1 1"}

    Returns: 1

  10. {"-10000 -10000","5906 -10000","-2047 3775"}

    Returns: 1

  11. {"1 1 1 -1 -1 1 -1 -1"}

    Returns: 4

    This looks something like this (where '-' and '|' represent the axes, and '*' represents a point): | | * | * | --------+-------- | * | * | | There are 4 lines of symmetry. Both axes are lines of symmetry, as are the line y = x and y = -x.

  12. {"1 0 0 1 -1 0 0 -1"}

    Returns: 4

  13. {"0 0","1 1","-1 1"}

    Returns: 1

  14. {"0 0 2 1 0 5 -2 4"}

    Returns: 2

  15. {"1 0","0 1","-1 0","0 -1","1 1","1 -1","-1 1","-1 -1"}

    Returns: 4

  16. {"0 100 100 0","0 0 100 100","51 52"}

    Returns: 0

  17. {"0 0","100 0","50 87"}

    Returns: 1

  18. {"0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0", "0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1", "0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2", "0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3", "0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4", "0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5", "0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 6", "0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 7", "0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 8", "0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 9", "0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10", "0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11", "0 12 1 12 2 12 3 12 4 12 5 12 6 12 7 12 8 12 9 12", "0 13 1 13 2 13 3 13 4 13 5 13 6 13 7 13 8 13 9 13", "0 14 1 14 2 14 3 14 4 14 5 14 6 14 7 14 8 14 9 14", "0 15 1 15 2 15 3 15 4 15 5 15 6 15 7 15 8 15 9 15", "0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 16 9 16", "0 17 1 17 2 17 3 17 4 17 5 17 6 17 7 17 8 17 9 17", "0 18 1 18 2 18 3 18 4 18 5 18 6 18 7 18 8 18 9 18", "0 19 1 19 2 19 3 19 4 19 5 19 6 19 7 19 8 19 9 19"}

    Returns: 2

  19. {"0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0", "0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1", "0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2", "0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3", "0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4", "0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5", "0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 6", "0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 7", "0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 8", "0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 9", "0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10", "0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11", "0 12 1 12 2 12 3 12 4 12 5 12 6 12 7 12 8 12 9 12", "0 13 1 13 2 13 3 13 4 13 5 13 6 13 7 13 8 13 9 13", "0 14 1 14 2 14 3 14 4 14 5 14 6 14 7 14 8 14 9 14", "0 15 1 15 2 15 3 15 4 15 5 15 6 15 7 15 8 15 9 15", "0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 16 9 16", "0 17 1 17 2 17 3 17 4 17 5 17 6 17 7 17 8 17 9 17", "0 18 1 18 2 18 3 18 4 18 5 18 6 18 7 18 8 18 9 18", "0 19 1 19 2 19 3 19 4 19 5 19 6 19 7 19 8 19 10 19"}

    Returns: 0

  20. {"1 1 1 0"}

    Returns: 2

  21. {"-24 25 -24 -25 25 -24 -25 -24 -23 25 -23 -25", "25 -23 -25 -23 -22 25 -22 -25 25 -22 -25 -22 -21 25", "-21 -25 25 -21 -25 -21 -20 25 -20 -25 25 -20", "-25 -20 -19 25 -19 -25 25 -19 -25 -19 -18 25", "-18 -25 25 -18 -25 -18 -17 25 -17 -25 25 -17", "-25 -17 -16 25 -16 -25 25 -16 -25 -16 -15 25", "-15 -25 25 -15 -25 -15 -14 25 -14 -25 25 -14", "-25 -14 -13 25 -13 -25 25 -13 -25 -13 -12 25", "-12 -25 25 -12 -25 -12 -11 25 -11 -25 25 -11", "-25 -11 -10 25 -10 -25 25 -10 -25 -10 -9 25 -9 -25", "25 -9 -25 -9 -8 25 -8 -25 25 -8 -25 -8 -7 25 -7 -25", "25 -7 -25 -7 -6 25 -6 -25 25 -6 -25 -6 -5 25 -5 -25", "25 -5 -25 -5 -4 25 -4 -25 25 -4 -25 -4 -3 25 -3 -25", "25 -3 -25 -3 -2 25 -2 -25 25 -2 -25 -2 -1 25 -1 -25", "25 -1 -25 -1 0 25 0 -25 25 0 -25 0 1 25 1 -25 25 1", "-25 1 2 25 2 -25 25 2 -25 2 3 25 3 -25 25 3 -25 3", "4 25 4 -25 25 4 -25 4 5 25 5 -25 25 5 -25 5 6 25", "6 -25 25 6 -25 6 7 25 7 -25 25 7 -25 7 8 25 8 -25", "25 8 -25 8 9 25 9 -25 25 9 -25 9 10 25 10 -25 25 10", "-25 10 11 25 11 -25 25 11 -25 11 12 25 12 -25 25 12", "-25 12 13 25 13 -25 25 13 -25 13 14 25 14 -25 25 14", "-25 14 15 25 15 -25 25 15 -25 15 16 25 16 -25 25 16", "-25 16 17 25 17 -25 25 17 -25 17 18 25 18 -25 25 18", "-25 18 19 25 19 -25 25 19 -25 19 20 25 20 -25 25 20", "-25 20 21 25 21 -25 25 21 -25 21 22 25 22 -25 25 22", "-25 22 23 25 23 -25 25 23 -25 23 24 25 24 -25 25 24", "-25 24 25 25 25 -25 -25 25 -25 -25"}

    Returns: 4

  22. {"-2400 2500 -2400 -2500 2500 -2400 -2500 -2400", "-2300 2500 -2300 -2500 2500 -2300 -2500 -2300", "-2200 2500 -2200 -2500 2500 -2200 -2500 -2200", "-2100 2500 -2100 -2500 2500 -2100 -2500 -2100", "-2000 2500 -2000 -2500 2500 -2000 -2500 -2000", "-1900 2500 -1900 -2500 2500 -1900 -2500 -1900", "-1800 2500 -1800 -2500 2500 -1800 -2500 -1800", "-1700 2500 -1700 -2500 2500 -1700 -2500 -1700", "-1600 2500 -1600 -2500 2500 -1600 -2500 -1600", "-1500 2500 -1500 -2500 2500 -1500 -2500 -1500", "-1400 2500 -1400 -2500 2500 -1400 -2500 -1400", "-1300 2500 -1300 -2500 2500 -1300 -2500 -1300", "-1200 2500 -1200 -2500 2500 -1200 -2500 -1200", "-1100 2500 -1100 -2500 2500 -1100 -2500 -1100", "-1000 2500 -1000 -2500 2500 -1000 -2500 -1000", "-900 2500 -900 -2500 2500 -900 -2500 -900 -800 2500", "-800 -2500 2500 -800 -2500 -800 -700 2500", "-700 -2500 2500 -700 -2500 -700 -600 2500", "-600 -2500 2500 -600 -2500 -600 -500 2500", "-500 -2500 2500 -500 -2500 -500 -400 2500", "-400 -2500 2500 -400 -2500 -400 -300 2500", "-300 -2500 2500 -300 -2500 -300 -200 2500", "-200 -2500 2500 -200 -2500 -200 -100 2500", "-100 -2500 2500 -100 -2500 -100 0 2500 0 -2500", "2500 0 -2500 0 100 2500 100 -2500 2500 100", "-2500 100 200 2500 200 -2500 2500 200 -2500 200", "300 2500 300 -2500 2500 300 -2500 300 400 2500", "400 -2500 2500 400 -2500 400 500 2500 500 -2500", "2500 500 -2500 500 600 2500 600 -2500 2500 600", "-2500 600 700 2500 700 -2500 2500 700 -2500 700", "800 2500 800 -2500 2500 800 -2500 800 900 2500", "900 -2500 2500 900 -2500 900 1000 2500 1000 -2500", "2500 1000 -2500 1000 1100 2500 1100 -2500 2500 1100", "-2500 1100 1200 2500 1200 -2500 2500 1200", "-2500 1200 1300 2500 1300 -2500 2500 1300", "-2500 1300 1400 2500 1400 -2500 2500 1400", "-2500 1400 1500 2500 1500 -2500 2500 1500", "-2500 1500 1600 2500 1600 -2500 2500 1600", "-2500 1600 1700 2500 1700 -2500 2500 1700", "-2500 1700 1800 2500 1800 -2500 2500 1800", "-2500 1800 1900 2500 1900 -2500 2500 1900", "-2500 1900 2000 2500 2000 -2500 2500 2000", "-2500 2000 2100 2500 2100 -2500 2500 2100", "-2500 2100 2200 2500 2200 -2500 2500 2200", "-2500 2200 2300 2500 2300 -2500 2500 2300", "-2500 2300 2400 2500 2400 -2500 2500 2400", "-2500 2400"}

    Returns: 4

  23. {"8 10 9 10 10 8 10 9","-8 10 -9 10 -10 8 -10 9","-8 -10 -9 -10 -10 -8 -10 -9","8 -10 9 -10 10 -8 10 -9"}

    Returns: 4

  24. {"9999 10000 -10000 -10000 9998 9999"}

    Returns: 0

  25. {"9999 10000 -10000 -10000 10000 -10000 -10000 10000"}

    Returns: 0

  26. {"9999 10000 -10000 -10000 10000 -10000 -10000 10000"}

    Returns: 0

  27. { "0 0 0 1 0 4" }

    Returns: 1

  28. { "0 0 1 0 2 0 3 0 4 0" }

    Returns: 2

  29. { "0 0 1 1" }

    Returns: 2

  30. { "0 0 0 1 0 -1" }

    Returns: 2

  31. { "0 0 1 1 2 2" }

    Returns: 2

  32. { "1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9", "2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9", "3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9", "4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9", "5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9", "6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9", "7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9", "8 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9", "9 0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9", "10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9", "11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9", "12 0 12 1 12 2 12 3 12 4 12 5 12 6 12 7 12 8 12 9", "13 0 13 1 13 2 13 3 13 4 13 5 13 6 13 7 13 8 13 9", "14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 7 14 8 14 9", "15 0 15 1 15 2 15 3 15 4 15 5 15 6 15 7 15 8 15 9", "16 0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 16 9", "17 0 17 1 17 2 17 3 17 4 17 5 17 6 17 7 17 8 17 9", "18 0 18 1 18 2 18 3 18 4 18 5 18 6 18 7 18 8 18 9", "19 0 19 1 19 2 19 3 19 4 19 5 19 6 19 7 19 8 19 9" }

    Returns: 2


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: