Statistics

Problem Statement for "RaiseThisBarn"

Problem Statement

The pony Applejack is going to raise a new barn. The barn will consist of N sections in a row. Some of the sections will be empty, others will contain a single cow each. You are given a String str with N characters. This string describes the desired layout of the barn: the character 'c' represents a section with a cow, and the character '.' represents an empty section.

After she raises the barn, Applejack will build a wall that will divide the barn into two separate parts: one containing the first k sections and the other containing the last N-k sections, for some integer k. Each part must contain at least one section. (I.e., k must be between 1 and N-1, inclusive.) Additionally, Applejack wants both parts to contain exactly the same number of cows.

Return the number of possible positions for the wall. In other words, return the number of choices for the integer k such that all the conditions above are satisfied.

Definition

Class:
RaiseThisBarn
Method:
calc
Parameters:
String
Returns:
int
Method signature:
int calc(String str)
(be sure your method is public)

Constraints

  • str will contain between 2 and 50 characters, inclusive.
  • Each character in str will be 'c' or '.'.

Examples

  1. "cc..c.c"

    Returns: 3

    Applejack can choose k=2, k=3, or k=4. The three corresponding solutions are shown below, with '|' representing the wall between the two parts. cc|..c.c cc.|.c.c cc..|c.c

  2. "c....c....c"

    Returns: 0

    There is an odd number of cows. It is impossible to divide them into two equal halves.

  3. "............"

    Returns: 11

    This is a barn with 12 empty sections. It can be divided in 11 different ways: into 1+11 sections, 2+10 sections, ..., or 11+1 sections.

  4. ".c.c...c..ccc.c..c.c.cc..ccc"

    Returns: 3

  5. ".."

    Returns: 1

  6. "c."

    Returns: 0

  7. ".c"

    Returns: 0

  8. "cc"

    Returns: 1

  9. "..."

    Returns: 2

  10. "c.."

    Returns: 0

  11. ".c."

    Returns: 0

  12. "cc."

    Returns: 1

  13. "..c"

    Returns: 0

  14. "c.c"

    Returns: 2

  15. ".cc"

    Returns: 1

  16. "ccc"

    Returns: 0

  17. "...."

    Returns: 3

  18. "c..."

    Returns: 0

  19. ".c.."

    Returns: 0

  20. "cc.."

    Returns: 1

  21. "..c."

    Returns: 0

  22. "c.c."

    Returns: 2

  23. ".cc."

    Returns: 1

  24. "ccc."

    Returns: 0

  25. "...c"

    Returns: 0

  26. "c..c"

    Returns: 3

  27. ".c.c"

    Returns: 2

  28. "cc.c"

    Returns: 0

  29. "..cc"

    Returns: 1

  30. "c.cc"

    Returns: 0

  31. ".ccc"

    Returns: 0

  32. "cccc"

    Returns: 1

  33. "c.ccc"

    Returns: 1

  34. "c.cccc"

    Returns: 0

  35. "cc.ccc."

    Returns: 0

  36. ".c.cccc."

    Returns: 0

  37. ".cc....c."

    Returns: 0

  38. ".c..cc.c.c"

    Returns: 0

  39. "......cccc."

    Returns: 1

  40. "....c....cc."

    Returns: 0

  41. "c.cc.ccc...c."

    Returns: 0

  42. "..cc..c..ccc.c"

    Returns: 0

  43. "c..cc..c..c.c.c"

    Returns: 0

  44. ".cc..c.cc.c.cc.."

    Returns: 1

  45. "ccccccc.c...c..cc"

    Returns: 0

  46. "c..c.ccccc.cc....."

    Returns: 0

  47. "c.c....ccc.c..c.cc."

    Returns: 0

  48. "c.c...ccc.c.c...ccc."

    Returns: 2

  49. "c...cc....c.c.cccc.c."

    Returns: 2

  50. "ccc.ccc.cc..cc.ccc.c.."

    Returns: 1

  51. "c...cc...cccc.ccccc.cc."

    Returns: 2

  52. "........c....cc..cc.c..c"

    Returns: 0

  53. "..ccc.c.c..c.cccc.c...c.c"

    Returns: 0

  54. "cc...cc.c.c.c.c.cccc......"

    Returns: 2

  55. ".c.c....cc.c.cc..c..ccc..c."

    Returns: 1

  56. "cccc.c..c.cc.....c.c.....cc."

    Returns: 2

  57. "cc.cc.cc....c..cc.c.c.c.cc.c."

    Returns: 0

  58. "ccc....c..c..ccc..c.c.c.cc..c."

    Returns: 1

  59. "..c..cc...c...c.ccc..c.ccc..ccc"

    Returns: 0

  60. ".c..cc.c..c..c.c..ccc...ccc..ccc"

    Returns: 1

  61. "cc.c.cccc.c.c..cc.c.c....c..cccc."

    Returns: 3

  62. "c.....cccc.c..ccc..c.ccc..cc.ccccc"

    Returns: 2

  63. "..ccc..cc...c.c.....c.c.c....ccc..c"

    Returns: 6

  64. "ccccc....cc..c..ccc.....c..cc...c..c"

    Returns: 3

  65. "....c.cccc....ccccc.c.ccc..cccccc.ccc"

    Returns: 0

  66. "..c.c.....c.cccc...c.c..c.....cc.cccc."

    Returns: 2

  67. ".c......ccccc...cc...c.c.cccc.ccccc.c.."

    Returns: 2

  68. "c.cc.c.c.c.c.cccccc.c..c.....c..cc.cc.c."

    Returns: 0

  69. "c.cc...c..cc......c.cccc..ccc...c.cc..ccc"

    Returns: 1

  70. "c..cc.c.c...c...c..c.....c.c.cc.ccc.cccc.."

    Returns: 0

  71. ".cc.ccccc.cccc.cc..cccc....c...cc..c....ccc"

    Returns: 1

  72. "cc....cc..ccc.c...c.ccc.cc.ccc..ccccc.cccc.."

    Returns: 1

  73. "c.cccccc.cc.c.ccc.ccccc.cc.cccc.....c.c.cc.cc"

    Returns: 1

  74. "c..c...cc.c.c.cc..c..cc.c.c.cc.c.ccc......c..."

    Returns: 1

  75. ".cccccccc....c....ccc..c.c...c..c..c..ccc.ccc.."

    Returns: 0

  76. "ccc...cc.cc.c.cc..c..ccccc.c.c..c.cc..c....c...c"

    Returns: 1

  77. "c.c.c...cc..cccc....c.cccc....c.c..ccccc.c.c..ccc"

    Returns: 1

  78. ".cccc...........ccc.cc.c.c....c...cc.ccc.cc.cccc.c"

    Returns: 4

  79. ".................................................."

    Returns: 49

  80. "cccccccccccccccccccccccccccccccccccccccccccccccccc"

    Returns: 1

  81. "..........."

    Returns: 10

  82. "..cc.."

    Returns: 1

  83. "c.c.c.c"

    Returns: 2

  84. "c...c"

    Returns: 4

  85. "c.c................."

    Returns: 2

  86. "cc.cc"

    Returns: 2

  87. "c..c....cc...cccc"

    Returns: 4


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: