Statistics

Problem Statement for "KnightTour"

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 String[] cells containing the sequence of cells visited by the knight in order. Each element represents a single cell and is in the form "<letter><digit>" (quotes for clarity), where <letter> is a letter representing the column and <digit> is a digit representing the row. "A1" represents the bottom-left corner of the board, and "F6" represents the top-right corner (see the picture). Return the String "Valid" if cells contains a valid re-entrant knight's tour, and return "Invalid" otherwise (all quotes for clarity).

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

  1. {"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.

  2. {"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.

  3. {"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.

  4. {"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"

  5. {"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"

  6. {"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"

  7. {"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"

  8. {"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"

  9. {"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"

  10. {"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"

  11. {"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"

  12. {"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"

  13. {"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"

  14. {"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"

  15. {"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"

  16. {"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"

  17. {"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"

  18. {"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"

  19. {"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"

  20. {"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"

  21. {"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"

  22. {"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"

  23. {"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"

  24. {"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"

  25. {"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"

  26. {"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"

  27. {"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"

  28. {"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"

  29. {"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"

  30. {"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"

  31. {"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"

  32. {"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"

  33. {"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"

  34. {"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"

  35. {"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"

  36. {"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"

  37. {"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"

  38. {"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.

  39. {"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"

  40. {"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"

  41. {"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"

  42. {"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"

  43. {"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"

  44. {"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"

  45. {"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"

  46. {"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"


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: