Statistics

Problem Statement for "QuickTableau"

Problem Statement

A Young tableau is a two-dimensional array of integers such that each row and column is sorted in ascending order (rows left-to-right, columns top-to-bottom). Given a int[] table with exactly 16 elements, all of which are distinct, you will return the fewest number of swaps required to turn table into a Young tableau. table should be interpreted as a 4 x 4 array of integers. More visually,
  table = { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P }
corresponds to the following 4 x 4 array
  A  B  C  D
  E  F  G  H
  I  J  K  L
  M  N  O  P ,
where A through P are integers.

Definition

Class:
QuickTableau
Method:
numSwaps
Parameters:
int[]
Returns:
int
Method signature:
int numSwaps(int[] table)
(be sure your method is public)

Constraints

  • table will contain exactly 16 elements.
  • table will contain no repeated elements.
  • Each element of table will be between 1 and 16, inclusive.

Examples

  1. { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }

    Returns: 0

    We already have a Young tableau.

  2. {1,5,9,13,2,6,10,14,3,7,11,15,4,8,12,16}

    Returns: 0

  3. {1,2,3,4,5,6,7,8,9,11,12,13,10,14,16,15}

    Returns: 1

  4. {1,2,3,4,5,6,7,8,9,11,12,13,10,16,15,14}

    Returns: 1

  5. {1,2,3,4,5,6,7,8,9,10,11,12,13,16,14,15}

    Returns: 2

  6. {12,2,10,6,14,5,11,16,1,7,3,13,9,8,4,15}

    Returns: 7

  7. {16,1,3,2,9,11,13,8,12,5,6,14,4,7,15,10}

    Returns: 8

  8. {3,6,15,11,4,2,14,13,9,7,12,5,8,1,16,10}

    Returns: 7

  9. {15,8,9,3,7,6,10,11,5,13,2,16,1,12,14,4}

    Returns: 7

  10. {7,2,12,15,16,9,4,14,5,3,8,11,13,10,1,6}

    Returns: 7

  11. {11,10,12,14,6,5,8,1,16,4,15,13,2,9,3,7}

    Returns: 8

  12. {9,3,8,13,11,5,14,12,2,7,10,16,1,4,15,6}

    Returns: 7

  13. {3,1,16,12,7,6,14,9,11,5,8,13,10,2,15,4}

    Returns: 6

  14. {10,1,2,5,16,15,12,4,13,3,9,6,7,8,14,11}

    Returns: 9

  15. {14,1,4,13,16,7,11,6,12,8,15,3,9,5,2,10}

    Returns: 8

  16. {4,6,5,14,8,2,7,9,10,16,11,1,3,13,15,12}

    Returns: 7

  17. {3,9,5,13,11,10,7,8,16,12,1,6,15,2,14,4}

    Returns: 8

  18. {13,7,4,9,11,2,10,14,3,12,6,8,16,1,15,5}

    Returns: 7

  19. {12,10,16,5,8,7,4,13,15,6,2,1,11,14,9,3}

    Returns: 7

  20. {2,10,5,1,14,8,3,13,4,9,15,6,7,12,16,11}

    Returns: 6

  21. {5,1,7,15,8,14,10,16,4,2,13,3,12,9,6,11}

    Returns: 8

  22. {4,14,13,8,12,6,2,1,9,10,7,11,16,15,5,3}

    Returns: 8

  23. {4,16,8,3,10,6,5,7,13,9,14,2,15,11,12,1}

    Returns: 8

  24. {13,9,3,1,5,10,11,2,7,16,15,8,14,12,6,4}

    Returns: 9

  25. {2,8,6,4,13,9,3,15,7,14,10,5,12,1,16,11}

    Returns: 8

  26. {9,15,3,6,13,1,16,12,2,4,5,8,11,14,10,7}

    Returns: 8

  27. {10,13,7,11,8,12,2,5,14,4,1,9,3,6,15,16}

    Returns: 7

  28. {2,5,1,15,3,11,16,8,9,14,12,7,10,6,13,4}

    Returns: 7

  29. {5,7,15,4,8,3,13,12,11,2,9,1,10,14,16,6}

    Returns: 8

  30. {10,9,2,11,16,6,7,5,13,14,4,12,8,15,1,3}

    Returns: 8

  31. {1,5,9,4,16,7,8,14,3,12,11,6,2,13,15,10}

    Returns: 6

  32. {7,4,6,15,13,2,11,12,1,10,9,8,14,16,3,5}

    Returns: 8

  33. {12,2,7,8,10,1,14,15,4,9,11,16,6,5,3,13}

    Returns: 6

  34. {13,8,15,9,4,2,12,16,6,1,11,14,7,3,5,10}

    Returns: 7

  35. {11,8,2,13,1,3,7,14,16,15,9,4,6,5,12,10}

    Returns: 8

  36. {2,11,6,1,15,4,9,12,7,5,14,3,8,10,13,16}

    Returns: 5

  37. {2,16,13,9,4,3,7,5,14,8,11,15,1,10,6,12}

    Returns: 7

  38. {12,3,4,6,15,2,5,16,7,1,9,11,8,10,13,14}

    Returns: 6

  39. {2,7,14,1,10,12,16,4,13,8,15,3,9,5,6,11}

    Returns: 9

  40. {3,13,4,5,8,16,11,7,12,2,10,14,15,6,1,9}

    Returns: 9

  41. { 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }

    Returns: 6

  42. { 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }

    Returns: 1

    Here we only need to swap the first 2 values.

  43. { 4, 3, 2, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }

    Returns: 2

  44. { 4, 3, 2, 1, 8, 7, 6, 5, 12, 11, 10, 9, 16, 15, 14, 13 }

    Returns: 8

  45. {16, 15, 14, 13, 12, 11, 10, 6, 8, 7, 9, 5, 4, 3, 2, 1 }

    Returns: 7

  46. {10, 15, 4, 3, 7, 9, 2, 1, 16, 13, 5, 12, 6, 8, 14, 11 }

    Returns: 9

  47. {3, 6, 5, 13, 7, 9, 10, 14, 16, 1, 15, 12, 4, 2, 8, 11 }

    Returns: 8

  48. {4, 3, 2, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }

    Returns: 2

  49. {16, 15, 14, 13, 12, 11, 1, 9, 8, 7, 6, 5, 4, 3, 2, 10 }

    Returns: 7

  50. {15, 8, 3, 9, 2, 13, 16, 1, 6, 7, 5, 12, 4, 14, 11, 10 }

    Returns: 7

  51. {1, 4, 3, 7, 5, 6, 2, 8, 9, 10, 11, 15, 12, 13, 14, 16 }

    Returns: 2

  52. {15, 9, 6, 3, 12, 5, 13, 4, 16, 8, 1, 10, 11, 7, 14, 2 }

    Returns: 7

  53. {1, 2, 3, 5, 4, 6, 7, 9, 8, 10, 11, 13, 12, 14, 15, 16 }

    Returns: 0

  54. {13, 3, 11, 10, 12, 8, 7, 5, 15, 14, 4, 1, 6, 2, 16, 9 }

    Returns: 8

  55. {7, 16, 1, 11, 13, 4, 2, 5, 3, 10, 14, 6, 9, 15, 12, 8 }

    Returns: 8

  56. {11, 15, 10, 16, 9, 3, 8, 5, 2, 1, 7, 14, 13, 4, 12, 6 }

    Returns: 9

  57. {1, 2, 5, 6, 3, 4, 9, 10, 7, 8, 11, 12, 13, 14, 15, 16 }

    Returns: 0

  58. {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }

    Returns: 6

  59. {1, 2, 5, 6, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }

    Returns: 0

  60. {1, 13, 7, 8, 16, 6, 9, 3, 14, 10, 12, 15, 11, 5, 4, 2 }

    Returns: 4

  61. {10, 5, 16, 7, 12, 9, 15, 1, 14, 3, 6, 13, 2, 11, 8, 4 }

    Returns: 8

  62. {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1 }

    Returns: 6

  63. {15, 14, 16, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 11, 10 }

    Returns: 8

  64. {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 1, 2, 4, 3 }

    Returns: 8

  65. {6, 1, 4, 5, 2, 3, 8, 9, 7, 14, 10, 12, 16, 15, 13, 11 }

    Returns: 5

  66. {8, 7, 9, 3, 2, 5, 4, 1, 12, 10, 15, 6, 11, 14, 13, 16 }

    Returns: 7

  67. {1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16 }

    Returns: 0

  68. {16, 11, 14, 13, 12, 15, 1, 9, 8, 7, 6, 3, 4, 5, 2, 10 }

    Returns: 9

  69. {4, 3, 7, 6, 1, 8, 9, 10, 2, 5, 14, 16, 13, 12, 15, 11 }

    Returns: 7

  70. {10, 9, 8, 7, 1, 2, 3, 4, 11, 12, 13, 14, 15, 16, 5, 6 }

    Returns: 9

  71. {13, 12, 15, 14, 8, 4, 5, 6, 7, 9, 11, 16, 10, 3, 2, 1 }

    Returns: 8

  72. {10, 16, 3, 1, 2, 4, 11, 8, 12, 5, 7, 15, 13, 14, 9, 6 }

    Returns: 7

  73. {2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }

    Returns: 1

  74. {16, 1, 2, 3, 8, 5, 6, 7, 12, 9, 10, 11, 4, 13, 14, 15 }

    Returns: 7

  75. {14, 16, 5, 3, 1, 10, 9, 11, 12, 7, 2, 6, 13, 4, 15, 8 }

    Returns: 7

  76. {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 11, 14, 12, 15, 16 }

    Returns: 1

  77. {16, 1, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 15 }

    Returns: 7


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: