Problem Statement
A knight is a chess piece that moves by simultaneously shifting one square along one axis and two squares along the other. A knight's tour of a chessboard is a sequence of moves made by a knight such that each square of the board is visited exactly once. If the final position in the tour is a knight's move away from the first position, the tour is called re-entrant. The picture below shows a re-entrant knight's tour for a 6x6 chessboard.
Josh is trying to find another re-entrant knight's tour on a 6x6 chessboard. He needs a program to make sure he doesn't make any mistakes.
You will be given a
Definition
- Class:
- KnightTour
- Method:
- checkTour
- Parameters:
- String[]
- Returns:
- String
- Method signature:
- String checkTour(String[] cells)
- (be sure your method is public)
Constraints
- cells will contain exactly 36 elements.
- Each element of cells will be in the form "<letter><digit>" (quotes for clarity), where <letter> is an uppercase letter between 'A' and 'F', inclusive, and <digit> is a digit between '1' and '6', inclusive.
Examples
{"A1", "B3", "A5", "C6", "E5", "F3", "D2", "F1", "E3", "F5", "D4", "B5", "A3", "B1", "C3", "A2", "C1", "E2", "F4", "E6", "C5", "A6", "B4", "D5", "F6", "E4", "D6", "C4", "B6", "A4", "B2", "D1", "F2", "D3", "E1", "C2"}
Returns: "Valid"
The example from the statement.
{"A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3"}
Returns: "Invalid"
Some cells are not visited.
{"D4", "F5", "D6", "B5", "A3", "B1", "D2", "F1", "E3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "C4", "A5", "C6", "E5", "F3", "E1", "C2", "A1", "B3", "C5", "E6", "F4", "E2", "C3", "A2", "C1", "D3", "B4", "A6"}
Returns: "Invalid"
This tour is not re-entrant.
{"D4", "F5", "D6", "B5", "A3", "B1", "D2", "F1", "E3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "C4", "A5", "C6", "E5", "F3", "E1", "C2", "A1", "B3", "C5", "A6", "B4", "A2", "C3", "E2", "C1", "D3", "F4", "E6"}
Returns: "Valid"
{"E3", "F1", "D2", "B1", "A3", "B5", "D6", "F5", "D4", "C2", "A1", "B3", "A5", "C6", "E5", "F3", "E1", "D3", "B4", "A6", "C5", "E6", "F4", "E2", "C1", "A2", "C3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "C4"}
Returns: "Valid"
{"B1", "A3", "B5", "D6", "F5", "D4", "E6", "F4", "D3", "C1", "E2", "C3", "A2", "B4", "A6", "C5", "B3", "A1", "C2", "E1", "F3", "E5", "C6", "A5", "C4", "B2", "A4", "B6", "D5", "F6", "E4", "F2", "D1", "E3", "F1", "D2"}
Returns: "Valid"
{"C3", "D5", "F6", "E4", "C5", "A6", "B4", "A2", "C1", "E2", "F4", "E6", "D4", "C6", "A5", "B3", "A1", "C2", "E1", "F3", "E5", "D3", "F2", "D1", "B2", "A4", "B6", "C4", "A3", "B5", "D6", "F5", "E3", "F1", "D2", "B1"}
Returns: "Valid"
{"E6", "C5", "A6", "B4", "C6", "A5", "B3", "A1", "C2", "E1", "D3", "E5", "F3", "D4", "F5", "D6", "B5", "A3", "B1", "D2", "F1", "E3", "C4", "B2", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "C3", "A2", "C1", "E2", "F4"}
Returns: "Valid"
{"C4", "A5", "C6", "E5", "F3", "E1", "D3", "F4", "E2", "C1", "A2", "B4", "A6", "C5", "E6", "D4", "C2", "A1", "B3", "D2", "F1", "E3", "F5", "D6", "B5", "A3", "B1", "C3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2"}
Returns: "Valid"
{"B5", "A3", "B1", "D2", "F1", "E3", "C4", "B2", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "C3", "E2", "F4", "E6", "C5", "A6", "B4", "A2", "C1", "D3", "E1", "F3", "E5", "C6", "A5", "B3", "A1", "C2", "D4", "F5", "D6"}
Returns: "Valid"
{"C3", "B5", "A3", "B1", "D2", "F1", "E3", "F5", "D6", "E4", "F6", "D5", "B6", "C4", "E5", "F3", "E1", "C2", "A1", "B3", "A5", "C6", "D4", "E2", "F4", "E6", "C5", "A6", "B4", "A2", "C1", "D3", "F2", "D1", "B2", "A4"}
Returns: "Valid"
{"D6", "F5", "E3", "F1", "D2", "B1", "A3", "B5", "D4", "E6", "F4", "E2", "C1", "A2", "C3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "D3", "C5", "A6", "B4", "C6", "A5", "B3", "A1", "C2", "E1", "F3", "E5", "C4"}
Returns: "Valid"
{"C4", "A3", "B1", "D2", "F1", "E3", "F5", "D6", "B5", "C3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "D3", "F4", "E2", "C1", "A2", "B4", "A6", "C5", "E6", "D4", "F3", "E1", "C2", "A1", "B3", "A5", "C6", "E5"}
Returns: "Valid"
{"A3", "B1", "D2", "F1", "E3", "F5", "D4", "C2", "A1", "B3", "A5", "C6", "E5", "F3", "E1", "D3", "C1", "E2", "C3", "A2", "B4", "A6", "C5", "E6", "F4", "D5", "F6", "E4", "F2", "D1", "B2", "A4", "B6", "C4", "D6", "B5"}
Returns: "Valid"
{"D5", "F6", "E4", "C3", "B5", "D6", "C4", "B2", "D1", "F2", "D3", "E1", "F3", "E5", "C6", "A5", "B3", "A1", "C2", "A3", "B1", "D2", "F1", "E3", "F5", "D4", "E6", "F4", "E2", "C1", "A2", "B4", "A6", "C5", "A4", "B6"}
Returns: "Valid"
{"C6", "E5", "C4", "B6", "A4", "B2", "D1", "F2", "D3", "C1", "E2", "F4", "E6", "C5", "A6", "B4", "A2", "C3", "E4", "F6", "D5", "E3", "F1", "D2", "B1", "A3", "B5", "D6", "F5", "D4", "F3", "E1", "C2", "A1", "B3", "A5"}
Returns: "Valid"
{"E2", "C1", "A2", "C3", "B5", "A3", "B1", "D2", "F1", "E3", "F5", "D6", "C4", "A5", "C6", "E5", "F3", "E1", "D3", "F2", "D1", "B2", "A4", "B6", "D5", "F6", "E4", "C5", "A6", "B4", "C2", "A1", "B3", "D4", "E6", "F4"}
Returns: "Valid"
{"A6", "C5", "E6", "F4", "E2", "C3", "B1", "A3", "B5", "D6", "F5", "D4", "C6", "A5", "B3", "A1", "C2", "E1", "F3", "E5", "C4", "D2", "F1", "E3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "D3", "C1", "A2", "B4"}
Returns: "Valid"
{"A5", "C4", "B6", "A4", "B2", "D1", "F2", "D3", "C1", "A2", "B4", "A6", "C5", "E6", "F4", "E2", "D4", "F5", "D6", "B5", "A3", "B1", "C3", "E4", "F6", "D5", "E3", "F1", "D2", "B3", "A1", "C2", "E1", "F3", "E5", "C6"}
Returns: "Valid"
{"B1", "D2", "F1", "E3", "C4", "B6", "A4", "B2", "D1", "F2", "E4", "C3", "D5", "F6", "C6", "A5", "B3", "A1", "C2", "E1", "F3", "E5", "D3", "C1", "A2", "B4", "A6", "C5", "E6", "F4", "E2", "D4", "F5", "D6", "B5", "A3"}
Returns: "Invalid"
{"C2", "A1", "B3", "A5", "C6", "C3", "D5", "F6", "E4", "C5", "A6", "B4", "A2", "C1", "E2", "F4", "E6", "D4", "B5", "D6", "F5", "E3", "F1", "D2", "B1", "A3", "C4", "B6", "A4", "B2", "D1", "F2", "D3", "E5", "F3", "E1"}
Returns: "Invalid"
{"C2", "E1", "F3", "E5", "C6", "A5", "C4", "A3", "B1", "D2", "F1", "E3", "F5", "D6", "B5", "F2", "D1", "C3", "E4", "F6", "D5", "B6", "A4", "B2", "D3", "C5", "A6", "B4", "A2", "C1", "E2", "F4", "E6", "D4", "B3", "A1"}
Returns: "Invalid"
{"A4", "B2", "D1", "F2", "D3", "C1", "A2", "B4", "A6", "C5", "E6", "F4", "E2", "D4", "F5", "E3", "F1", "D2", "B1", "A3", "B5", "D6", "E4", "C3", "D5", "F6", "B3", "A1", "C2", "E1", "F3", "E5", "C6", "A5", "C4", "B6"}
Returns: "Invalid"
{"F4", "E6", "D4", "E2", "C1", "A2", "C3", "D5", "F6", "E4", "F2", "D1", "B2", "A4", "B6", "C4", "A5", "B3", "A1", "C2", "E1", "F3", "D2", "B1", "A3", "B5", "D6", "F5", "E3", "F1", "E5", "C6", "B4", "A6", "C5", "D3"}
Returns: "Invalid"
{"C2", "A1", "B3", "A5", "C6", "E5", "F3", "E1", "D3", "F2", "D1", "B2", "A4", "B6", "C4", "A3", "B1", "D2", "F1", "E3", "F5", "D6", "B5", "D4", "E6", "F4", "E2", "C1", "A2", "C3", "E4", "C5", "A6", "B4", "D5", "F6"}
Returns: "Invalid"
{"F1", "E3", "F5", "D6", "B5", "A3", "B1", "D2", "F3", "E1", "C2", "A1", "B3", "A5", "C4", "E5", "C6", "D4", "E6", "F4", "E2", "C1", "A2", "B4", "A6", "C5", "D3", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "D1", "C3"}
Returns: "Invalid"
{"B5", "D6", "F5", "E3", "F1", "D2", "B1", "A3", "C4", "A5", "C6", "E5", "F3", "E1", "C2", "A1", "B3", "D4", "E6", "F4", "E2", "C1", "A2", "B4", "A6", "C5", "D3", "B2", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "C3"}
Returns: "Valid"
{"D1", "B2", "C4", "B6", "E6", "F4", "F1", "C1", "A2", "A5", "C6", "F6", "D5", "B4", "A6", "A3", "B1", "E1", "F3", "D2", "B3", "A1", "A4", "C5", "C2", "E3", "F5", "F2", "E4", "D6", "D3", "E5", "B5", "D4", "E2", "C3"}
Returns: "Invalid"
{"B1", "A3", "A6", "B4", "D5", "B6", "E6", "F4", "C4", "E5", "E2", "B2", "B5", "D6", "D3", "F2", "E4", "C3", "A4", "A1", "D1", "E3", "C2", "C5", "F5", "D4", "B3", "D2", "F1", "C1", "A2", "A5", "C6", "F6", "F3", "E1"}
Returns: "Invalid"
{"E5", "D2", "C1", "B1", "A2", "A5", "B5", "D6", "F6", "E3", "E6", "F4", "E1", "C3", "F2", "E4", "E2", "F1", "C4", "A6", "B4", "D1", "B3", "A4", "D5", "C6", "D3", "A1", "C2", "F3", "F5", "D4", "B6", "A3", "B2", "C5"}
Returns: "Invalid"
{"A6", "A5", "B6", "E5", "D6", "F3", "F2", "F5", "E2", "F1", "E4", "B3", "A2", "A4", "D4", "A1", "D1", "C2", "E1", "B1", "E3", "E6", "C3", "A3", "B5", "B4", "C1", "B2", "D3", "F4", "D2", "C4", "F6", "C5", "D5", "C6"}
Returns: "Invalid"
{"E2", "F3", "F5", "F6", "E6", "F4", "D3", "E5", "D6", "A4", "B6", "A5", "A6", "B3", "A2", "C2", "A3", "C5", "B5", "D5", "B4", "A1", "C4", "B2", "B1", "C3", "D1", "F1", "F2", "E4", "C1", "D4", "D2", "E1", "E3", "C6"}
Returns: "Invalid"
{"C2", "A1", "B3", "A5", "C6", "E5", "F3", "E1", "D3", "C1", "A2", "B4", "A6", "C5", "E6", "F4", "E2", "D4", "F5", "D6", "B5", "A3", "B1", "D2", "F1", "E3", "C4", "B6", "A4", "B2", "D1", "F2", "E4", "F6", "D5", "E3"}
Returns: "Invalid"
{"A3", "B1", "D2", "F1", "E3", "F5", "D6", "B5", "D4", "F3", "E1", "C2", "A1", "B3", "A5", "C6", "E5", "D3", "F2", "D1", "B2", "A4", "C5", "A6", "B4", "D3", "F4", "E6", "F4", "E2", "C1", "A2", "C3", "D5", "B6", "C4"}
Returns: "Invalid"
{"E5", "C6", "A5", "B3", "A1", "C2", "E1", "F3", "D2", "F1", "E3", "F5", "D4", "E6", "F4", "E2", "C1", "A2", "C1", "D3", "F2", "D1", "B2", "A4", "C5", "A6", "B4", "D5", "F6", "D5", "C3", "E4", "D6", "B5", "A3", "C4"}
Returns: "Invalid"
{"B6", "A4", "B2", "D1", "F2", "E4", "F6", "D5", "F4", "E6", "F4", "E2", "C3", "A2", "C1", "D3", "E1", "F3", "E5", "C6", "B4", "A6", "C5", "B3", "A5", "C4", "D2", "B1", "A3", "C4", "D6", "B5", "D4", "F5", "E3", "C4"}
Returns: "Invalid"
{"F4", "E6", "C5", "A6", "B4", "A2", "C1", "E2", "D4", "F5", "D6", "B5", "A3", "B1", "C3", "A4", "B6", "D5", "F6", "E4", "F2", "D1", "B2", "C4", "E3", "F1", "D2", "F3", "E5", "C6", "A5", "B3", "A1", "C2", "E1", "D3"}
Returns: "Valid"
{"C5", "D3", "F2", "D1", "B2", "A4", "B6", "D5", "C3", "E4", "F6", "B3", "A1", "C2", "E1", "F3", "E5", "C6", "A5", "C4", "A3", "B1", "D2", "F1", "E3", "F5", "D6", "B5", "D4", "E6", "F4", "E2", "C1", "A2", "B4", "A6"}
Returns: "Invalid"
"F6-B3" is not a valid knight move.
{"D4", "F5", "D6", "B5", "A3", "B1", "D2", "F1", "E3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "C4", "A5", "C6", "E5", "F3", "E1", "C2", "A1", "B3", "C5", "E6", "F4", "E2", "C3", "A2", "C1", "D3", "B4", "A6" }
Returns: "Invalid"
{"D4", "D3", "D6", "B5", "A3", "B1", "D2", "F1", "E3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "C4", "A5", "C6", "E5", "F3", "E1", "C2", "A1", "B3", "C5", "A6", "B4", "A2", "C3", "E2", "C1", "D3", "F4", "E6" }
Returns: "Invalid"
{"D4", "F5", "D6", "B5", "A3", "B1", "D2", "F1", "E3", "D1", "F2", "E4", "F6", "D5", "B6", "A4", "B2", "C4", "A5", "C6", "E5", "F3", "E1", "C2", "A1", "B3", "C5", "A6", "B4", "A2", "C3", "E2", "C1", "D3", "F4", "E6" }
Returns: "Valid"
{"C5", "D3", "F2", "D1", "B2", "A4", "B6", "D5", "C3", "E4", "F6", "B3", "A1", "C2", "E1", "F3", "E5", "C6", "A5", "C4", "A3", "B1", "D2", "F1", "E3", "F5", "D6", "B5", "D4", "E6", "F4", "E2", "C1", "A2", "B4", "A6" }
Returns: "Invalid"
{"A1", "B3", "A5", "C6", "E5", "F3", "D2", "F1", "E3", "F5", "D4", "B5", "A3", "B1", "C3", "A2", "C1", "E2", "F4", "E6", "C5", "A6", "B4", "D5", "F6", "E4", "D6", "C4", "B6", "A4", "B2", "D1", "F2", "D3", "E1", "C2" }
Returns: "Valid"
{"A1", "B3", "A5", "C6", "E5", "F3", "D2", "F1", "E3", "F5", "D4", "B5", "A3", "B1", "C3", "A2", "C1", "E2", "F4", "E6", "A6", "C5", "B4", "D5", "F6", "E4", "D6", "C4", "B6", "A4", "B2", "D1", "F2", "D3", "E1", "C2" }
Returns: "Invalid"
{"A1", "B3", "A5", "C6", "E5", "F3", "D2", "F1", "E3", "F5", "D4", "B5", "A3", "B1", "C3", "A2", "C1", "E2", "F4", "E6", "C5", "A6", "B4", "C2", "E1", "D3", "F2", "D1", "B2", "A4", "B6", "C4", "D6", "E4", "F6", "D5" }
Returns: "Invalid"
{"A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3", "A1", "C2", "E3", "F5", "D4", "B3" }
Returns: "Invalid"