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
{"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
{"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.
{"518", "423", ".76"}
Returns: 18
{"123", "456", "87."}
Returns: -1
{"123", "456", "78."}
Returns: 0
The game is already completed.
{".23", "456", "781"}
Returns: -1
{ ".48", "236", "517"}
Returns: 22
{ "12.", "354", "768"}
Returns: 20
{ "7.6", "524", "831"}
Returns: -1
{ ".52", "864", "713"}
Returns: -1
{ "12.", "837", "654"}
Returns: -1
{ "147", "6.2", "835"}
Returns: -1
{ "753", "4.6", "218"}
Returns: -1
{ "563", "872", "4.1"}
Returns: -1
{ "537", "241", "86."}
Returns: -1
{ "213", "487", ".65"}
Returns: -1
{ "571", ".42", "368"}
Returns: -1
{ "781", ".24", "356"}
Returns: -1
{ "7.6", "483", "125"}
Returns: 27
{ "815", "734", "2.6"}
Returns: 23
{ "361", "475", "28."}
Returns: 20
{ "756", "8.4", "312"}
Returns: -1
{ "45.", "216", "738"}
Returns: -1
{ "1.4", "532", "678"}
Returns: -1
{ "562", "147", "3.8"}
Returns: -1
{ "431", "265", "87."}
Returns: -1
{ "763", "421", "58."}
Returns: 24
{ "763", "248", "5.1"}
Returns: 23
{ "125", ".86", "734"}
Returns: 21
{ "185", "24.", "637"}
Returns: -1
{ "624", "385", "7.1"}
Returns: 23
{ "34.", "217", "586"}
Returns: 18
{ "54.", "718", "623"}
Returns: 22
{ "457", ".12", "638"}
Returns: -1
{ "852", "73.", "641"}
Returns: 25
{ "362", "487", "1.5"}
Returns: -1
{"267","385","41."}
Returns: 26
{"287","645","1.3"}
Returns: 23
{"124",".63","587"}
Returns: 23
{"847","2.6","153"}
Returns: 24
{"271",".48","356"}
Returns: 25
{"317","465",".82"}
Returns: -1
{".31","876","452"}
Returns: 24
{"418","657","23."}
Returns: -1
{"87.","541","326"}
Returns: -1
{"254","136",".87"}
Returns: -1
{ "647", "85.", "321" }
Returns: 31
{ "867", "254" , "3.1" }
Returns: 31
{"542","381","67."}
Returns: 26
{".52","748","136"}
Returns: 26
{"123","45.","786"}
Returns: 1
{"123","456",".78"}
Returns: 2
{"123",".56","478"}
Returns: 3
{"12.","463","758"}
Returns: 4
{"1.2","463","758"}
Returns: 5
{"412","5.3","786"}
Returns: 6
{"243","185","7.6"}
Returns: 7
{"253","416",".78"}
Returns: 8
{"243","168","7.5"}
Returns: 9
{"123","574",".86"}
Returns: 10
{"123","74.","658"}
Returns: 11
{"413","762","85."}
Returns: 12
{"124",".83","765"}
Returns: 13
{"128","5.3","476"}
Returns: 14
{"124","58.","763"}
Returns: 15
{"842","136","57."}
Returns: 16
{"182","73.","456"}
Returns: 17
{".17","236","548"}
Returns: 18
{"6.2","315","784"}
Returns: 19
{"436","715","28."}
Returns: 20
{"426",".73","185"}
Returns: 21
{".54","672","813"}
Returns: 22
{"157","42.","386"}
Returns: 23
{"746","8.2","351"}
Returns: 24
{"871","265","3.4"}
Returns: 25
{"21.","467","358"}
Returns: 26
{"346","82.","571"}
Returns: 27
{".78","351","426"}
Returns: 28
{"8.3","762","541"}
Returns: 29
{"15.","247","368"}
Returns: 30
{"647","85.","321"}
Returns: 31
{"781", "654", "2.3" }
Returns: -1
{"123", "67.", "584" }
Returns: 15
{".23", "456", "781" }
Returns: -1
{".87", "654", "321" }
Returns: 28
{"867", "254", "3.1" }
Returns: 31
{".12", "345", "678" }
Returns: 22
{"876", "543", "21." }
Returns: 30