Statistics

Problem Statement for "Abacus"

Problem Statement

An abacus can be used to do arithmetic. The version that we have has 6 horizontal threads, each with nine beads on it. The beads on each thread are always arranged with just one gap, possibly at one of the ends. However many beads are adjacent and at the right end of the thread is the digit value of the thread. The value on the abacus is read by taking the digits in order from top thread to bottom thread and arranging them from left to right (so the top thread is the one that contains the most significant digit).

Create a class Abacus that contains a method add that is given a String[] original and a number val and that returns a String[] showing the abacus after val has been added to the original abacus.

Both in original and in the return, the String[] will contain exactly 6 elements representing the 6 threads in order from top thread to bottom thread. Each element will contain a lowercase 'o' to represent each bead and three consecutive hyphens '-' to indicate the empty part of the thread. Each element will thus contain exactly 12 characters.

Definition

Class:
Abacus
Method:
add
Parameters:
String[], int
Returns:
String[]
Method signature:
String[] add(String[] original, int val)
(be sure your method is public)

Constraints

  • original will contain exactly 6 elements.
  • Each element of original will contain exactly 12 characters, 9 lowercase 'o's and 3 consecutive '-'s.
  • val will be between 0 and 999,999 inclusive.
  • val added to the original abacus will result in a value that can be shown on the abacus.

Examples

  1. {"ooo---oooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    5

    Returns: {"ooo---oooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "o---oooooooo", "ooooo---oooo" }

    When we add 5 to the original, it is necessary to "carry" 1 to the next thread up. This shows the arithmetic 699979 + 5 = 699984

  2. {"ooo---oooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    21

    Returns: {"oo---ooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    This shows 699979 + 21 = 700000

  3. {"ooo---oooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "ooooo---oooo", "---ooooooooo"}

    7123

    Returns: {"oo---ooooooo", "ooooooooo---", "oo---ooooooo", "ooooooooo---", "oo---ooooooo", "ooooooo---oo" }

  4. {"ooo---oooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    99

    Returns: {"oo---ooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "oo---ooooooo", "o---oooooooo" }

  5. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    100000

    Returns: {"oooooooo---o", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo" }

  6. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---"}

    900000

    Returns: {"---ooooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

  7. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---"}

    0

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

  8. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    909020

    Returns: {"---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo" }

  9. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    809030

    Returns: {"---ooooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "---ooooooooo" }

  10. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    6

    Returns: {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "o---oooooooo", "oooo---ooooo" }

  11. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    123456

    Returns: {"ooooooo---oo", "oooooooo---o", "ooooo---oooo", "ooooo---oooo", "oooooo---ooo", "oooo---ooooo" }

  12. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    818273

    Returns: {"---ooooooooo", "ooooooooo---", "---ooooooooo", "ooooooo---oo", "oooo---ooooo", "ooooooo---oo" }

  13. {"oooo---ooooo", "oooooooo---o", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "ooooooooo---"}

    410670

    Returns: {"---ooooooooo", "ooooooo---oo", "oooooooo---o", "ooo---oooooo", "ooooo---oooo", "ooooooooo---" }

  14. {"oooo---ooooo", "oooooooo---o", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "ooooooooo---"}

    489020

    Returns: {"---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "ooooooooo---" }

  15. {"oooooo---ooo", "---ooooooooo", "oooooooo---o", "ooooooo---oo", "ooo---oooooo", "oooooo---ooo"}

    78899

    Returns: {"ooooo---oooo", "oo---ooooooo", "ooooooooo---", "oooooooo---o", "ooo---oooooo", "ooooooo---oo" }

  16. {"ooooo---oooo", "---ooooooooo", "o---oooooooo", "ooooooo---oo", "ooooo---oooo", "ooooo---oooo"}

    196155

    Returns: {"ooo---oooooo", "---ooooooooo", "ooooo---oooo", "oooooo---ooo", "---ooooooooo", "---ooooooooo" }

  17. {"ooooooooo---", "oooooo---ooo", "ooooooooo---", "ooo---oooooo", "oooooooo---o", "oooooo---ooo"}

    83121

    Returns: {"oooooooo---o", "oooooooo---o", "oooooo---ooo", "oo---ooooooo", "oooooo---ooo", "ooooo---oooo" }

  18. {"---ooooooooo", "o---oooooooo", "oooo---ooooo", "oooooooo---o", "ooooo---oooo", "oooooooo---o"}

    1115

    Returns: {"---ooooooooo", "o---oooooooo", "ooo---oooooo", "ooooooo---oo", "oooo---ooooo", "ooo---oooooo" }

  19. {"ooo---oooooo", "---ooooooooo", "ooo---oooooo", "ooooooooo---", "ooooooo---oo", "oooooo---ooo"}

    95774

    Returns: {"oo---ooooooo", "---ooooooooo", "oooooooo---o", "oo---ooooooo", "---ooooooooo", "oo---ooooooo" }

  20. {"ooooooo---oo", "oooooooo---o", "ooooooooo---", "oooo---ooooo", "oooooooo---o", "ooooooo---oo"}

    164954

    Returns: {"oooooo---ooo", "oo---ooooooo", "oooo---ooooo", "ooooo---oooo", "ooo---oooooo", "ooo---oooooo" }

  21. {"ooo---oooooo", "oooo---ooooo", "ooooooo---oo", "ooooooooo---", "oooo---ooooo", "---ooooooooo"}

    166825

    Returns: {"o---oooooooo", "oooooooo---o", "o---oooooooo", "o---oooooooo", "o---oooooooo", "ooooo---oooo" }

  22. {"---ooooooooo", "oooooooo---o", "ooooooo---oo", "oooo---ooooo", "oooooo---ooo", "ooooooo---oo"}

    81413

    Returns: {"---ooooooooo", "---ooooooooo", "oooooo---ooo", "---ooooooooo", "ooooo---oooo", "oooo---ooooo" }

  23. {"ooooo---oooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "o---oooooooo", "oooooooo---o"}

    224375

    Returns: {"ooo---oooooo", "oooooo---ooo", "ooooo---oooo", "oooooooo---o", "oooo---ooooo", "ooo---oooooo" }

  24. {"o---oooooooo", "ooo---oooooo", "oooooooo---o", "oooo---ooooo", "oooooooo---o", "oooo---ooooo"}

    59650

    Returns: {"---ooooooooo", "ooooooo---oo", "oooooooo---o", "oooooooo---o", "ooo---oooooo", "oooo---ooooo" }

  25. {"ooooo---oooo", "oo---ooooooo", "ooo---oooooo", "ooooo---oooo", "oo---ooooooo", "ooooooo---oo"}

    177148

    Returns: {"ooo---oooooo", "oooo---ooooo", "oooooo---ooo", "ooo---oooooo", "ooooooo---oo", "ooooooooo---" }

  26. {"ooo---oooooo", "ooooooo---oo", "ooooooooo---", "oo---ooooooo", "ooooooo---oo", "---ooooooooo"}

    307549

    Returns: {"---ooooooooo", "ooooooo---oo", "o---oooooooo", "ooooooo---oo", "oo---ooooooo", "o---oooooooo" }

  27. {"---ooooooooo", "ooooooo---oo", "o---oooooooo", "o---oooooooo", "o---oooooooo", "oo---ooooooo"}

    25251

    Returns: {"---ooooooooo", "oooo---ooooo", "ooooo---oooo", "oooooooo---o", "oooooo---ooo", "o---oooooooo" }

  28. {"ooo---oooooo", "oooooo---ooo", "oooooo---ooo", "oo---ooooooo", "oo---ooooooo", "ooooo---oooo"}

    33146

    Returns: {"ooo---oooooo", "ooo---oooooo", "ooo---oooooo", "---ooooooooo", "ooooooo---oo", "ooooooooo---" }

  29. {"oooo---ooooo", "ooooooo---oo", "oooo---ooooo", "---ooooooooo", "o---oooooooo", "o---oooooooo"}

    78439

    Returns: {"ooo---oooooo", "ooooooooo---", "ooooo---oooo", "ooooo---oooo", "ooooooo---oo", "oo---ooooooo" }

  30. {"oooooooo---o", "oo---ooooooo", "oo---ooooooo", "oooo---ooooo", "oooooo---ooo", "oooooooo---o"}

    797330

    Returns: {"---ooooooooo", "oo---ooooooo", "ooooo---oooo", "o---oooooooo", "ooo---oooooo", "oooooooo---o" }

  31. {"ooo---oooooo", "ooooo---oooo", "oo---ooooooo", "ooooo---oooo", "oooo---ooooo", "ooooooooo---"}

    25802

    Returns: {"ooo---oooooo", "oo---ooooooo", "oooooo---ooo", "ooooooo---oo", "oooo---ooooo", "ooooooo---oo" }

  32. {"---ooooooooo", "ooooooooo---", "oooooooo---o", "ooo---oooooo", "---ooooooooo", "oo---ooooooo"}

    64485

    Returns: {"---ooooooooo", "ooo---oooooo", "ooo---oooooo", "oooooooo---o", "o---oooooooo", "ooooooo---oo" }

  33. {"o---oooooooo", "oooooooo---o", "oo---ooooooo", "oooo---ooooo", "ooooooo---oo", "ooo---oooooo"}

    150262

    Returns: {"---ooooooooo", "ooo---oooooo", "oo---ooooooo", "oo---ooooooo", "o---oooooooo", "o---oooooooo" }

  34. {"ooo---oooooo", "ooo---oooooo", "oo---ooooooo", "---ooooooooo", "ooooo---oooo", "oooooooo---o"}

    38359

    Returns: {"oo---ooooooo", "ooooooooo---", "ooo---oooooo", "oooooo---ooo", "ooooooooo---", "ooooooooo---" }

  35. {"ooo---oooooo", "ooooo---oooo", "oooooooo---o", "ooooooo---oo", "ooooo---oooo", "o---oooooooo"}

    139357

    Returns: {"oo---ooooooo", "o---oooooooo", "ooooooooo---", "ooo---oooooo", "ooooooooo---", "oooo---ooooo" }

  36. {"oooo---ooooo", "ooo---oooooo", "ooooo---oooo", "oo---ooooooo", "ooo---oooooo", "oo---ooooooo"}

    180951

    Returns: {"oo---ooooooo", "ooooo---oooo", "oooo---ooooo", "oo---ooooooo", "oooooooo---o", "o---oooooooo" }

  37. {"ooo---oooooo", "ooo---oooooo", "ooooooo---oo", "o---oooooooo", "ooooooo---oo", "ooooo---oooo"}

    265695

    Returns: {"---ooooooooo", "ooooooo---oo", "o---oooooooo", "oooo---ooooo", "oooooooo---o", "---ooooooooo" }

  38. {"oooooo---ooo", "ooooooooo---", "ooo---oooooo", "oooooo---ooo", "oooo---ooooo", "ooooo---oooo"}

    290279

    Returns: {"oooo---ooooo", "---ooooooooo", "ooo---oooooo", "ooo---oooooo", "oooooo---ooo", "oooooo---ooo" }

  39. {"---ooooooooo", "oooo---ooooo", "oooo---ooooo", "---ooooooooo", "oooooooo---o", "oooo---ooooo"}

    32592

    Returns: {"---ooooooooo", "o---oooooooo", "o---oooooooo", "oooo---ooooo", "ooooooooo---", "oo---ooooooo" }

  40. {"oooo---ooooo", "ooooo---oooo", "oo---ooooooo", "ooo---oooooo", "oooooo---ooo", "o---oooooooo"}

    42257

    Returns: {"oooo---ooooo", "o---oooooooo", "---ooooooooo", "o---oooooooo", "---ooooooooo", "oooo---ooooo" }

  41. {"oo---ooooooo", "oooooooo---o", "oooo---ooooo", "ooo---oooooo", "ooooooooo---", "ooooo---oooo"}

    211041

    Returns: {"---ooooooooo", "ooooooo---oo", "ooo---oooooo", "ooo---oooooo", "ooooo---oooo", "oooo---ooooo" }

  42. {"oooo---ooooo", "---ooooooooo", "oo---ooooooo", "ooooo---oooo", "oooo---ooooo", "oo---ooooooo"}

    166877

    Returns: {"oo---ooooooo", "ooo---oooooo", "ooooo---oooo", "oooooo---ooo", "oooooo---ooo", "ooooo---oooo" }

  43. {"o---oooooooo", "oooo---ooooo", "ooooooooo---", "oo---ooooooo", "o---oooooooo", "oooooo---ooo"}

    135393

    Returns: {"---ooooooooo", "o---oooooooo", "ooo---oooooo", "oooooooo---o", "oo---ooooooo", "ooo---oooooo" }

  44. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo"}

    99999

    Returns: {"oooooooo---o", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "o---oooooooo" }

  45. {"o---oooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo" }

    1

    Returns: {"---ooooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

  46. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "oooooooo---o" }

    1

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooo---oo" }

  47. {"o---oooooooo", "oo---ooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo" }

    5

    Returns: {"o---oooooooo", "o---oooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooo---oooo" }

  48. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    12

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "oooooooo---o", "ooooooo---oo" }

  49. {"---ooooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    0

    Returns: {"---ooooooooo", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

  50. {"---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "o---oooooooo" }

    1

    Returns: {"---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo" }

  51. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    1

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "oooooooo---o" }

  52. {"ooooo---oooo", "ooooo---oooo", "ooooo---oooo", "ooooo---oooo", "ooooo---oooo", "ooooo---oooo" }

    1

    Returns: {"ooooo---oooo", "ooooo---oooo", "ooooo---oooo", "ooooo---oooo", "ooooo---oooo", "oooo---ooooo" }

  53. {"ooo---oooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "oo---ooooooo", "---ooooooooo" }

    5

    Returns: {"ooo---oooooo", "---ooooooooo", "---ooooooooo", "---ooooooooo", "o---oooooooo", "ooooo---oooo" }

  54. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo" }

    99

    Returns: {"ooooooooo---", "---ooooooooo", "oooooooo---o", "ooooooooo---", "oo---ooooooo", "o---oooooooo" }

  55. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo" }

    1

    Returns: {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "o---oooooooo", "ooooooooo---" }

  56. {"ooooooooo---", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo" }

    100000

    Returns: {"oooooooo---o", "---ooooooooo", "ooooooooo---", "---ooooooooo", "oo---ooooooo", "---ooooooooo" }

  57. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    3

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "oooooo---ooo" }

  58. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    0

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

  59. {"ooooooooo---", "ooooo---oooo", "oooooo---ooo", "oo---ooooooo", "---ooooooooo", "ooo---oooooo" }

    431

    Returns: {"ooooooooo---", "ooooo---oooo", "ooooo---oooo", "ooooooo---oo", "ooooooo---oo", "oo---ooooooo" }

  60. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    56

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "oooo---ooooo", "ooo---oooooo" }

  61. {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---" }

    5

    Returns: {"ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "ooooooooo---", "oooo---ooooo" }


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: