Statistics

Problem Statement for "ThreeProgrammers"

Problem Statement

This problem is about three programmers who work together on a project. The programmers' names are Alice, Bob, and Charles. We will use 'A', 'B', and 'C' to denote them.

Each day exactly one of the three programmers works on the project. The code history is a string that specifies who worked on which day. For example, the string "AAC" means that Alice worked on the project for two days in a row and then Charles worked for a day.

Alice is always able to work on the project. Each time Bob spends a day working, he needs to take at least one day off before he is able to work again. Each time Charles spends a day working, he needs to take at least two days off.

The above information means that not all strings are valid code histories. For example, the string "BB" is not a valid code history because Bob cannot work two days in a row.

You are given a String code. This may or may not be a valid code history. Find any permutation of letters of code that produces a valid code history, and return that code history. If there are multiple solutions, you may return any of them. If there are no solutions, return "impossible" instead.

Definition

Class:
ThreeProgrammers
Method:
validCodeHistory
Parameters:
String
Returns:
String
Method signature:
String validCodeHistory(String code)
(be sure your method is public)

Constraints

  • code will contain between 1 and 50 characters, inclusive.
  • Each character in code will be one of 'A', 'B', and 'C'.

Examples

  1. "CAB"

    Returns: "BCA"

    The input is a valid code history. In fact, any permutation of this input is a valid code history, and you may return any of them.

  2. "CBB"

    Returns: "BCB"

    Bob cannot work on two consecutive days. Hence, "BCB" is the only valid code history that is a permutation of the given input.

  3. "BB"

    Returns: "impossible"

  4. "BBA"

    Returns: "BAB"

  5. "CAC"

    Returns: "impossible"

  6. "ACAC"

    Returns: "CAAC"

  7. "ACABC"

    Returns: "ACABC"

  8. "BAABCABBCCACBAACABAABABBCCAACABCCAACCABCACACCBABAB"

    Returns: "BACBABCAACBACABCBACBACABCBACBACABCABCAACBACAACABCA"

  9. "C"

    Returns: "C"

  10. "CC"

    Returns: "impossible"

  11. "CCC"

    Returns: "impossible"

  12. "B"

    Returns: "B"

  13. "CB"

    Returns: "BC"

  14. "CBC"

    Returns: "impossible"

  15. "CCBC"

    Returns: "impossible"

  16. "BB"

    Returns: "impossible"

  17. "CBB"

    Returns: "BCB"

  18. "CBCB"

    Returns: "impossible"

  19. "CCBCB"

    Returns: "impossible"

  20. "BBB"

    Returns: "impossible"

  21. "BBCB"

    Returns: "impossible"

  22. "CBBBC"

    Returns: "impossible"

  23. "BCCBCB"

    Returns: "impossible"

  24. "A"

    Returns: "A"

  25. "CA"

    Returns: "CA"

  26. "CCA"

    Returns: "impossible"

  27. "CACC"

    Returns: "impossible"

  28. "BA"

    Returns: "BA"

  29. "BCA"

    Returns: "BCA"

  30. "BCAC"

    Returns: "CBAC"

  31. "CACBC"

    Returns: "impossible"

  32. "BBA"

    Returns: "BAB"

  33. "CBAB"

    Returns: "BCBA"

  34. "BCBAC"

    Returns: "CBABC"

  35. "CACCBB"

    Returns: "impossible"

  36. "BBAB"

    Returns: "impossible"

  37. "CBABB"

    Returns: "BCBAB"

  38. "BBACCB"

    Returns: "BCBABC"

  39. "CBBCACB"

    Returns: "impossible"

  40. "AA"

    Returns: "AA"

  41. "CAA"

    Returns: "CAA"

  42. "ACCA"

    Returns: "CAAC"

  43. "CACCA"

    Returns: "impossible"

  44. "BAA"

    Returns: "BAA"

  45. "CBAA"

    Returns: "BCAA"

  46. "CCAAB"

    Returns: "CBACA"

  47. "CCCAAB"

    Returns: "impossible"

  48. "BBAA"

    Returns: "BABA"

  49. "ACBAB"

    Returns: "BCBAA"

  50. "ACABCB"

    Returns: "CBABCA"

  51. "CCBCABA"

    Returns: "CBACBAC"

  52. "BBABA"

    Returns: "BABAB"

  53. "BBABCA"

    Returns: "BCBABA"

  54. "BCABCBA"

    Returns: "BCBABCA"

  55. "BCCCABBA"

    Returns: "CBABCBAC"

  56. "AAA"

    Returns: "AAA"

  57. "AACA"

    Returns: "CAAA"

  58. "CACAA"

    Returns: "CAACA"

  59. "CCAAAC"

    Returns: "impossible"

  60. "ABAA"

    Returns: "BAAA"

  61. "CBAAA"

    Returns: "BCAAA"

  62. "CCAABA"

    Returns: "CBACAA"

  63. "CCACBAA"

    Returns: "CBACAAC"

  64. "ABABA"

    Returns: "BABAA"

  65. "BCBAAA"

    Returns: "BCBAAA"

  66. "BABACAC"

    Returns: "CBABCAA"

  67. "ACABCACB"

    Returns: "CBACBACA"

  68. "BABAAB"

    Returns: "BABABA"

  69. "BBABCAA"

    Returns: "BCBABAA"

  70. "BAACCABB"

    Returns: "BCBABCAA"

  71. "CBBAACCBA"

    Returns: "CBABCBACA"

  72. "CAAAAABAACAABBCBCCBABACBBAACCBBBCCBCCBBCACC"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  73. "ACBCBAACCBCCCBBACBACAAACBABACABABBABCCCCBACB"

    Returns: "impossible"

  74. "AACACCBCBBACBCBCBCAACBBCAAAAABACBBCACCCBACCBB"

    Returns: "impossible"

  75. "CCABAACABACCBBCCABBCCBACCABBCBAABABBBAACCBA"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACA"

  76. "CCACCACABAABABBBBBAACCCCABBCBCAABCBBBCBAACAC"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  77. "BCAACBCBBCCBBBCACABCACCAACBAAABBBACACCCABCBBA"

    Returns: "impossible"

  78. "ABBBCBACCCCCCBBCAABBACBABCAACABBBACBCCBCACAACA"

    Returns: "impossible"

  79. "CACACCACAABBAAABBCBCBBBAABACBBCBCACBCBBAACCB"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACA"

  80. "ABCBCBBACBAAAAABACBABBBCBCABCBABCACCCCCACCBAB"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBAC"

  81. "BBABBCCBABCAACCABCCACCABABBBCABBBBCBCACCACAAAC"

    Returns: "impossible"

  82. "ABCCAAAABCAACBCCCBACBBAAABBCBBCCCCCAABCCABBBCBB"

    Returns: "impossible"

  83. "CBCACBBCABBCBCABBBAACBACCBBABABCACBCABAAACBAC"

    Returns: "CBABCBABCBABCBABCBACBACBACBACBACBACBACBACBACA"

  84. "ACABAABCCBCBAAABCCBCCABACBACBBACBACABBBACCCBBB"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACBAC"

  85. "BBCABBABBBACBBBBCCCBBAABCCCCBCCCAACAAAAAAABCCBC"

    Returns: "impossible"

  86. "BABBACAABCBBBCACCABAACABBBCBACCCAABCBCBCCBCAACCB"

    Returns: "impossible"

  87. "ABBBABCCBCCACACCACAACCBBABAAAABBBAACBBCCACB"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACAA"

  88. "ABABCBBCAABACBCACCCABCAACCBCBCAABCABACCBBABA"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACA"

  89. "CCAAABBABBABCBACBABCCBCACACAACCABCCCCCAABABBB"

    Returns: "impossible"

  90. "CCCCABAAACAABCABABCBCBAAABCBBCCBCCCCBCBCBAAABA"

    Returns: "impossible"

  91. "ABBBACBAAACCACBAAABBACCBCBBABBCCAAACCCCBABCB"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACAA"

  92. "BBABCABBCABACCCAACCCACACBBCBBBBAACCCBACBABAAA"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBACA"

  93. "AACAACCBABCCCABBBACCCABCACAABBBBCBBAACBCBCACAB"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  94. "BCCCBBAAACAACCACCABCBCABCACAABBABBABCACBCBACBBC"

    Returns: "impossible"

  95. "CABACACCCACBBACBBBACABAABACCBBBBACCAACBBBCABA"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACAA"

  96. "BABCAAAAAACCCCABBBBCBBACCBBABCCBABAAABBCCCCACB"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBACA"

  97. "ABBBABBABACBACACACBACCCABBBCCABCACBBBCAACACCCAB"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  98. "CCCACBCABCCCBBCACBBACACCBCABBBCABAAACABBBAAABABC"

    Returns: "impossible"

  99. "CAABBCBACBBCCBACBCACBCBCABBACBCACBBBCABABAAAAA"

    Returns: "CBABCBABCBABCBABCBACBACBACBACBACBACBACBACBACAA"

  100. "CCCCBCCBABBBCBBAABACBBCBBAAACACABACABCABAAACBCB"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACBACA"

  101. "CBACCCBACCCBABCCBACABBABCACBCBBBABAAAABABCBBACAC"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  102. "BACCBABABBBBBBAABAACBCBABAACCCCCACCBBCACACCCCAABB"

    Returns: "impossible"

  103. "ACBABCACBCBAABCCBBACCBCBAABBACABACCCAABAACBA"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACAAA"

  104. "BACCBBAAAACABBACAAABBCBBCAACBBBCCACBAAABCCCCC"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACAA"

  105. "ABCBABCABACCAACABCCBACBCBABBAACCCBACCAACBAABCB"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACAAC"

  106. "ACACACACBCACACBBBBAAAABBACCCAACCBCBBCABCBACCBAB"

    Returns: "impossible"

  107. "BCBBABAACAACBBBACBBABCCACCAABCABBAABACCCACBCA"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACAAA"

  108. "BCACABBABCABAABCCBBBCABCCACAAACABCBACBCBCABCAA"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBACAA"

  109. "ABACBBBBCCCBBCCCAACCACBCBBAACBCBAACCAAAABACBBAA"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACA"

  110. "BCBBCAACCBABAACCBCCBAAACACCABBBBCAAACCAACBBBACCB"

    Returns: "impossible"

  111. "AABBBCCBCCBABACCAAACCBBBBAAACCCBBCABAABABACBAC"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACAAA"

  112. "BAAABACCBBACCCCACACACAABBCBBCCBBCABABABACBBAACB"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBACAA"

  113. "AABCBABAACCCCAABBCCABBACBBCCBCBABBAAABCCBBCAAACC"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBACBACA"

  114. "CBBABAAACCCCCACBACABAACBCBABBCCBABBBAABABCCCCABAC"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  115. "BBAACACBCABCABABAACCABACBCBCBBCAABACABBCBBCCABA"

    Returns: "CBABCBABCBABCBABCBACBACBACBACBACBACBACBACBACAAA"

  116. "BCBBAACCBAABCCBACAABBCACBCCACCCBBAAABBBCBABACABA"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACBACAA"

  117. "AABCCABBBCBCCACCCBAACBABBAACBCAABAAACABCABBCCBBBC"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBACBACA"

  118. "AAABAABCAABABBCCCACACBBCAACBCBBCCCACCBBCBAACBCBABB"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  119. "ABBABBABACABCACACABACABAABBACCAABBCCBBACCCCCA"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACAAAA"

  120. "BBABAACBABBCABBACCAABCABBBABCCAACACCCBCCAAACCA"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACAAA"

  121. "CAACBABBBAAAAAABCBCABCCBABCCBCAACCACACBBBABCACC"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACAACA"

  122. "BBCAAACACCACCAAACCABCBCACCBBAAABBCABCBBACCBABACB"

    Returns: "impossible"

  123. "BBBCCACACBABACACACABBCAABCCBBABBCCBAABCBACAAAA"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACAAAA"

  124. "CBCCCACCBAABCABAACCBABABAABAACCBBCCBAAABABCCBAB"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBACAAA"

  125. "BBBCACCCBCABABABBABCCABCBCACCBCCCCAAABAABABAAACA"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACAA"

  126. "CAACCCBABAABCCBCCBAACBBCCCBABACBBACACAAAABACBBBCA"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACAAC"

  127. "BBBCAABACCBBBACBCCACACBCBBCACABAAABABAACCCBBAAA"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACAAAA"

  128. "ABAACCCCBBBAACCBBBCBCCABAAACBACCBBBCAABABACCABAA"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBACAAA"

  129. "BBCBBBCACABCACCBCABBCBAAABAACAAABBBCCCCACCAABBACA"

    Returns: "CBABCBACBACBACBACBACBACBACBACBACBACBACBACBACBACAA"

  130. "CBBACBAACCACCCBCCBCCBAAABBCCCACCAABAABCBBBABAAAABB"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACA"

  131. "BABBCBACACABBCBAAAAACCCBBABBACCACCBBACAAAACBCBBB"

    Returns: "CBABCBABCBABCBABCBACBACBACBACBACBACBACBACBACAAAA"

  132. "BAAAABBACABACCCABBBBAABACCAAABBCCBBCAABCBCCBCCACB"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACBACAAA"

  133. "BCCCBCCBABBACABABAAABBACBCCCAACCBACBBCBABACAABCABA"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBACBACAA"

  134. "BABBABABBABABBBAAABAAAABBAAAAABBABBBABBBBAAABAA"

    Returns: "BABABABABABABABABABABABABABABABABABABABABABABAA"

  135. "BAAABABBBAAAABABAAABAAABABBBAAABBBBABBBBAABBBBAA"

    Returns: "BABABABABABABABABABABABABABABABABABABABABABABABA"

  136. "ABAABABABBBBABBABAABABBAAABBABBBBBBAABBABBAABAAAAA"

    Returns: "impossible"

  137. "CBCBBCCBBAABAABBCABABCBBCCCCCAAABBABCBBBBBABB"

    Returns: "CBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABC"

  138. "ABBACCCBBCCCBBBCABABBAAABBCBCAABBCCABBBBBBBBCA"

    Returns: "BCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABC"

  139. "CBAAABBABBBBBABCACCBBAABCBBBACBBCCCBBBBBBCAACCB"

    Returns: "BCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCB"

  140. "BABCBBBBCABAAACABBBCBBBCCCCBCACBBBAABABABBCCBBBB"

    Returns: "impossible"

  141. "AABBBBBBCCC"

    Returns: "BCBABCBABCB"

  142. "BBBACCB"

    Returns: "BCBABCB"

  143. "BABBCCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABABBA"

    Returns: "BCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABABAB"

  144. "AAABBBBBCCCC"

    Returns: "CBABCBABCBAC"

  145. "AAACCCCBBBBBBBB"

    Returns: "BCBABCBABCBABCB"

  146. "BCBABCBABCBABCB"

    Returns: "BCBABCBABCBABCB"

  147. "BCBCBABAB"

    Returns: "BCBABCBAB"

  148. "BBBBACC"

    Returns: "BCBABCB"

  149. "CAAC"

    Returns: "CAAC"

  150. "ABBBBCC"

    Returns: "BCBABCB"

  151. "AAABBBCCCC"

    Returns: "CBACBACBAC"

  152. "CCBBB"

    Returns: "impossible"

  153. "BBBCC"

    Returns: "impossible"

  154. "BAB"

    Returns: "BAB"

  155. "BABCBABCB"

    Returns: "BCBABCBAB"

  156. "BBBBCCA"

    Returns: "BCBABCB"

  157. "BCBABCBABCB"

    Returns: "BCBABCBABCB"

  158. "BCBABCB"

    Returns: "BCBABCB"

  159. "CBBABBAAACBBAAACCBBCAABCBCABBABBBBBACBBBBCBCBBBCCC"

    Returns: "BCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABC"

  160. "BBC"

    Returns: "BCB"

  161. "BABB"

    Returns: "impossible"

  162. "BCCA"

    Returns: "CBAC"

  163. "AAABBBBBBCCCC"

    Returns: "CBABCBABCBABC"

  164. "ABCBABCACBABCBABCACBABCBABCACBABCBABCACBABCBABCACB"

    Returns: "CBABCBABCBABCBABCBABCBABCBACBACBACBACBACBACBACBACA"

  165. "CCCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAA"

    Returns: "impossible"

  166. "BCCBCCBBCCCCBCACCBCCBCBBCCACCCBCCCCACCBCCCCCCBCBCB"

    Returns: "impossible"

  167. "BBBCA"

    Returns: "BCBAB"

  168. "BCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABC"

    Returns: "BCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABC"

  169. "BCBABCBA"

    Returns: "BCBABCBA"

  170. "CBBCBAC"

    Returns: "impossible"

  171. "CBAC"

    Returns: "CBAC"

  172. "BCBABCBABCBAB"

    Returns: "BCBABCBABCBAB"

  173. "CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAA"

    Returns: "CBABCBABCBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  174. "BCBAB"

    Returns: "BCBAB"

  175. "CCBBBA"

    Returns: "BCBABC"

  176. "ABBBC"

    Returns: "BCBAB"

  177. "CCCCBBBBAAAB"

    Returns: "CBABCBABCBAC"

  178. "AAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCC"

    Returns: "impossible"

  179. "AABBBBBCCC"

    Returns: "BCBABCBABC"

  180. "CBCA"

    Returns: "CBAC"

  181. "CCCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  182. "CBABCB"

    Returns: "BCBABC"

  183. "CCCCCCCCBBBBBBBBBBBAAAAAAA"

    Returns: "CBABCBABCBABCBABCBACBACBAC"

  184. "CBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCB"

    Returns: "BCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABCBABC"

  185. "ABCACBABCCABBBCAACCBAACBABBCCBBBBBCBCBCBAACCAABBBA"

    Returns: "CBABCBABCBABCBABCBABCBABCBABCBACBACBACBACBACBACBAC"

  186. "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  187. "BCBABCBAB"

    Returns: "BCBABCBAB"

  188. "ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCC"

    Returns: "CBACBACBACBACBACBACBACBACBACBACBACBACBACBACBACBAC"

  189. "BABACCBABBAAABCCBBCBBACAACBBABBBBCCACACC"

    Returns: "CBABCBABCBABCBABCBABCBACBACBACBACBACBACA"

  190. "ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCACC"

    Returns: "impossible"

  191. "BBCC"

    Returns: "impossible"

  192. "BCBACBABBC"

    Returns: "BCBABCBABC"

  193. "BCBC"

    Returns: "impossible"

  194. "BCBABCBABCBABCBABCBABCB"

    Returns: "BCBABCBABCBABCBABCBABCB"

  195. "CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB"

    Returns: "impossible"

  196. "CBBCAB"

    Returns: "BCBABC"

  197. "BBBBBBBBCCCCAAA"

    Returns: "BCBABCBABCBABCB"

  198. "BBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAA"

    Returns: "CBABCBABCBABCBACBACBACBACBACBACBACBACBACBACBACAAA"

  199. "CCCCCCBBBBBBBAAAAA"

    Returns: "CBABCBABCBACBACBAC"

  200. "BBBBBBBBBBBBBAAAAAACCCCCC"

    Returns: "BCBABCBABCBABCBABCBABCBAB"


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: