Statistics

Problem Statement for "PiecesMover"

Problem Statement

You are given a 5x5 board containing at most 5 pieces. Your task is to move the pieces so that the cells occupied by them form a connected component. A connected component is a set of cells where each pair of cells is connected by at least one path. Consecutive cells in a path must all be adjacent. Two cells are called adjacent if they share a common edge.

You are given a String[] board, where the j-th character of the i-th element is '*' if cell (i, j) is occupied by a piece and '.' otherwise. Return the minimum number of moves required to achieve your goal. Each move consists of moving one piece to an adjacent empty cell.

Definition

Class:
PiecesMover
Method:
getMinimumMoves
Parameters:
String[]
Returns:
int
Method signature:
int getMinimumMoves(String[] board)
(be sure your method is public)

Constraints

  • board will contain exactly 5 elements.
  • Each element of board will contain exactly 5 characters.
  • Each character in board will be either '.' or '*'.
  • board will contain between 1 and 5 '*' characters, inclusive.

Examples

  1. {".....", "..**.", ".....", "...*.", "....."}

    Returns: 1

    + + + + + + + O O + + + + O + | + + + . + + + + + +

  2. {".....", ".....", ".**..", ".*...", "**..."}

    Returns: 0

    The cells occupied by pieces have already formed a connected component.

  3. {"*...*", ".....", ".....", ".....", "*...*"}

    Returns: 12

    . + +-+-. | | + + + + + | | +-O O O-+ | + O + + + | | .-+ + + .

  4. {"**...", "*....", ".....", ".....", "*...*"}

    Returns: 7

  5. {"*...*", ".....", ".....", ".....", "*.*.*"}

    Returns: 10

  6. {"*...*", "....*", ".....", ".....", "*...*"}

    Returns: 10

  7. {"...*.", ".*...", "....*", "*....", "..*.."}

    Returns: 6

  8. {".....",".....","....*",".....","....."}

    Returns: 0

  9. {".....",".....",".*...",".....","....."}

    Returns: 0

  10. {".....",".....",".....",".....",".*..."}

    Returns: 0

  11. {".....","*....",".....",".....","*...."}

    Returns: 2

  12. {".....","*....",".....",".....","..*.."}

    Returns: 4

  13. {".....",".....",".*...",".....",".*..."}

    Returns: 1

  14. {".....",".....","..*..",".....","..*.."}

    Returns: 1

  15. {".....",".....",".....","*....","....*"}

    Returns: 4

  16. {".....",".....",".....","..*..","*...."}

    Returns: 2

  17. {".....","*..*.",".....",".....","....."}

    Returns: 2

  18. {".....","....*",".....","...*.","....*"}

    Returns: 2

  19. {".....","...*.","...*.",".....","*...."}

    Returns: 4

  20. {"...*.",".*...",".....",".....","..*.."}

    Returns: 4

  21. {".*...",".....",".....","....*","....*"}

    Returns: 5

  22. {".....",".....","...*.","....*","..*.."}

    Returns: 2

  23. {".....",".....",".....",".....",".**.*"}

    Returns: 1

  24. {".....","....*","...*.","*....","....."}

    Returns: 4

  25. {"..*..",".....","*..*.",".....","....."}

    Returns: 3

  26. {".....",".....","..*..","....*",".*..."}

    Returns: 3

  27. {".....","...*.",".*...","...*.","....."}

    Returns: 2

  28. {"*....",".*..*",".....",".*...","....."}

    Returns: 4

  29. {"*....","....*","..*.*",".....","....."}

    Returns: 5

  30. {"*....","...*.","...*.",".....","..*.."}

    Returns: 5

  31. {".....","*..*.",".....","..*..",".*..."}

    Returns: 5

  32. {".....","*..*.",".....","...*.","....*"}

    Returns: 5

  33. {".....","....*",".....","...*.","*...*"}

    Returns: 5

  34. {".....",".....",".*...","**...","*...."}

    Returns: 0

  35. {".....","..*..",".....","*....",".*..*"}

    Returns: 5

  36. {".....",".....","...*.","*....","**..."}

    Returns: 3

  37. {"..*..",".....",".....","...*.","*..*."}

    Returns: 5

  38. {"***..","...*.",".....",".....","....."}

    Returns: 1

  39. {".....","....*","..*..","*.*..","....."}

    Returns: 3

  40. {".*...","*....",".*...",".....","..*.."}

    Returns: 3

  41. {".....","..**.",".....",".*...","*...."}

    Returns: 5

  42. {"*....",".....","...*.","..**.","....."}

    Returns: 4

  43. {"..*.*","..*..",".....",".....","...*."}

    Returns: 4

  44. {".....","....*","**.*.",".....","....."}

    Returns: 3

  45. {".....","...**","..*..",".*...","....."}

    Returns: 3

  46. {"*....",".*...",".....",".*...","..*.."}

    Returns: 4

  47. {".....",".*...",".....",".....","***.."}

    Returns: 2

  48. {"*....","...*.","...*.",".....",".*..*"}

    Returns: 7

  49. {"..*..","...*.","*...*",".....","...*."}

    Returns: 5

  50. {"...*.",".....","..**.",".....",".**.."}

    Returns: 3

  51. {".....","*....","**...",".....","..**."}

    Returns: 4

  52. {"*....","..**.",".....",".....","...**"}

    Returns: 6

  53. {"*..*.",".....",".*..*",".....","...*."}

    Returns: 7

  54. {"*....",".*...",".....",".*..*","*...."}

    Returns: 6

  55. {".....","...*.",".*.**",".*...","....."}

    Returns: 2

  56. {".....",".*...",".*...","**...","...*."}

    Returns: 2

  57. {"..*..","..*..","..**.","....*","....."}

    Returns: 1

  58. {"*...*", ".....", ".....", ".....", "*...*" }

    Returns: 12

  59. {"..**.", ".....", ".....", ".....", ".**.." }

    Returns: 6

  60. {"*..*.", ".*...", "..*..", ".....", "*...." }

    Returns: 5

  61. {"*....", "....*", ".....", ".*...", "*...*" }

    Returns: 9

  62. {".**..", ".....", "....*", "*....", "...*." }

    Returns: 7

  63. {"*...*", ".....", ".....", ".....", "*.*.*" }

    Returns: 10

  64. {"....*", ".*...", "..*..", "...*.", "....*" }

    Returns: 5

  65. {"*...*", ".....", "..*..", ".....", "*...*" }

    Returns: 10

  66. {"....*", "*....", "..*..", ".....", ".*.*." }

    Returns: 7

  67. {"*....", ".....", ".....", ".....", "....." }

    Returns: 0

  68. {"*...*", "*...*", "..*..", ".....", "....." }

    Returns: 5

  69. {"*...*", ".....", ".....", "...*.", "*...*" }

    Returns: 10

  70. {"*.*..", ".....", "*....", ".....", "....." }

    Returns: 2

  71. {"..*..", ".....", "..*..", ".....", "*.*.*" }

    Returns: 5

  72. {"*....", ".*...", "..*..", "...*.", "....*" }

    Returns: 6

  73. {"...*.", "..***", ".....", ".....", "....." }

    Returns: 0

  74. {"..*..", ".....", "*.*.*", ".....", "..*.." }

    Returns: 4

  75. {"*...*", "..*..", ".....", "....*", "*...." }

    Returns: 9

  76. {"*...*", ".....", "...*.", ".....", "*...*" }

    Returns: 10

  77. {"*....", "..*..", "*...*", ".....", "...*." }

    Returns: 6

  78. {"*..*.", ".....", "..*..", ".....", "*..*." }

    Returns: 8

  79. {"**.**", "..*..", ".....", ".....", "....." }

    Returns: 1

  80. {".*...", "***..", ".*...", ".....", "....." }

    Returns: 0

  81. {"**..*", ".....", ".....", ".....", "*...*" }

    Returns: 10

  82. {"....*", "....*", "....*", "....*", "....*" }

    Returns: 0

  83. {".*...", "....*", ".....", ".....", "*.*.*" }

    Returns: 8

  84. {".....", ".....", ".....", ".....", "*..**" }

    Returns: 2

  85. {"..*..", ".**.*", "..*..", ".....", "....." }

    Returns: 1

  86. {"*.*..", ".*...", "*....", ".....", "....." }

    Returns: 2

  87. {".....", "..**.", "..**.", ".....", "....." }

    Returns: 0

  88. {".....", ".***.", ".*.*.", ".....", "....." }

    Returns: 0

  89. {"*...*", ".....", "*....", ".....", ".*..*" }

    Returns: 10


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: