Statistics

Problem Statement for "GameOfEight"

Problem Statement

In "The Game of Eight", you are given a 3x3 board containing 8 squares labelled 1 through 8, and one empty space. The initial state of the board is given in the String[] board, where '.' represents the empty space. In each turn, you pick any square which is horizontally or vertically adjacent to an empty space and move it to the empty space (see example 0 for clarification). Your goal is to arrange the squares so the board looks like this:

{"123",
 "456",
 "78."}

Return the minimum number of moves necessary to achieve this goal, or -1 if it's impossible.

Definition

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

Constraints

  • board will contain exactly 3 elements.
  • Each element of board will contain exactly 3 characters.
  • Each character of each element of board will be a digit ('1' - '8') or a dot ('.').
  • Each number between 1 and 8 will appear exactly once on the board.

Examples

  1. {"123", "485", "76."}

    Returns: 4

    The optimal solution is the following: 123 123 123 123 123 485 --> 485 --> 4.5 --> 45. --> 456 76. 7.6 786 786 78.

  2. {"518", "423", ".76"}

    Returns: 18

  3. {"123", "456", "87."}

    Returns: -1

  4. {"123", "456", "78."}

    Returns: 0

    The game is already completed.

  5. {".23", "456", "781"}

    Returns: -1

  6. { ".48", "236", "517"}

    Returns: 22

  7. { "12.", "354", "768"}

    Returns: 20

  8. { "7.6", "524", "831"}

    Returns: -1

  9. { ".52", "864", "713"}

    Returns: -1

  10. { "12.", "837", "654"}

    Returns: -1

  11. { "147", "6.2", "835"}

    Returns: -1

  12. { "753", "4.6", "218"}

    Returns: -1

  13. { "563", "872", "4.1"}

    Returns: -1

  14. { "537", "241", "86."}

    Returns: -1

  15. { "213", "487", ".65"}

    Returns: -1

  16. { "571", ".42", "368"}

    Returns: -1

  17. { "781", ".24", "356"}

    Returns: -1

  18. { "7.6", "483", "125"}

    Returns: 27

  19. { "815", "734", "2.6"}

    Returns: 23

  20. { "361", "475", "28."}

    Returns: 20

  21. { "756", "8.4", "312"}

    Returns: -1

  22. { "45.", "216", "738"}

    Returns: -1

  23. { "1.4", "532", "678"}

    Returns: -1

  24. { "562", "147", "3.8"}

    Returns: -1

  25. { "431", "265", "87."}

    Returns: -1

  26. { "763", "421", "58."}

    Returns: 24

  27. { "763", "248", "5.1"}

    Returns: 23

  28. { "125", ".86", "734"}

    Returns: 21

  29. { "185", "24.", "637"}

    Returns: -1

  30. { "624", "385", "7.1"}

    Returns: 23

  31. { "34.", "217", "586"}

    Returns: 18

  32. { "54.", "718", "623"}

    Returns: 22

  33. { "457", ".12", "638"}

    Returns: -1

  34. { "852", "73.", "641"}

    Returns: 25

  35. { "362", "487", "1.5"}

    Returns: -1

  36. {"267","385","41."}

    Returns: 26

  37. {"287","645","1.3"}

    Returns: 23

  38. {"124",".63","587"}

    Returns: 23

  39. {"847","2.6","153"}

    Returns: 24

  40. {"271",".48","356"}

    Returns: 25

  41. {"317","465",".82"}

    Returns: -1

  42. {".31","876","452"}

    Returns: 24

  43. {"418","657","23."}

    Returns: -1

  44. {"87.","541","326"}

    Returns: -1

  45. {"254","136",".87"}

    Returns: -1

  46. { "647", "85.", "321" }

    Returns: 31

  47. { "867", "254" , "3.1" }

    Returns: 31

  48. {"542","381","67."}

    Returns: 26

  49. {".52","748","136"}

    Returns: 26

  50. {"123","45.","786"}

    Returns: 1

  51. {"123","456",".78"}

    Returns: 2

  52. {"123",".56","478"}

    Returns: 3

  53. {"12.","463","758"}

    Returns: 4

  54. {"1.2","463","758"}

    Returns: 5

  55. {"412","5.3","786"}

    Returns: 6

  56. {"243","185","7.6"}

    Returns: 7

  57. {"253","416",".78"}

    Returns: 8

  58. {"243","168","7.5"}

    Returns: 9

  59. {"123","574",".86"}

    Returns: 10

  60. {"123","74.","658"}

    Returns: 11

  61. {"413","762","85."}

    Returns: 12

  62. {"124",".83","765"}

    Returns: 13

  63. {"128","5.3","476"}

    Returns: 14

  64. {"124","58.","763"}

    Returns: 15

  65. {"842","136","57."}

    Returns: 16

  66. {"182","73.","456"}

    Returns: 17

  67. {".17","236","548"}

    Returns: 18

  68. {"6.2","315","784"}

    Returns: 19

  69. {"436","715","28."}

    Returns: 20

  70. {"426",".73","185"}

    Returns: 21

  71. {".54","672","813"}

    Returns: 22

  72. {"157","42.","386"}

    Returns: 23

  73. {"746","8.2","351"}

    Returns: 24

  74. {"871","265","3.4"}

    Returns: 25

  75. {"21.","467","358"}

    Returns: 26

  76. {"346","82.","571"}

    Returns: 27

  77. {".78","351","426"}

    Returns: 28

  78. {"8.3","762","541"}

    Returns: 29

  79. {"15.","247","368"}

    Returns: 30

  80. {"647","85.","321"}

    Returns: 31

  81. {"781", "654", "2.3" }

    Returns: -1

  82. {"123", "67.", "584" }

    Returns: 15

  83. {".23", "456", "781" }

    Returns: -1

  84. {".87", "654", "321" }

    Returns: 28

  85. {"867", "254", "3.1" }

    Returns: 31

  86. {".12", "345", "678" }

    Returns: 22

  87. {"876", "543", "21." }

    Returns: 30


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: