Statistics

Problem Statement for "QuasiLatinSquares"

Problem Statement

You are given two positive integers, n and d.

Create a square table of size n×n containing only integers between 0 and d-1, inclusive, such that each row and each column contains each number between 0 and d-1, inclusive, at least once.

Return this table as a String[] containing exactly n elements. Each element represents a single row of the table and contains a single space delimited list of the numbers in that row from left to right. The numbers must have no extra leading zeroes.

If there are multiple possible answers, return the one with the lexicographically smallest first element. If there is still a tie, return the one with the lexicographically smallest second element, etc.

Definition

Class:
QuasiLatinSquares
Method:
makeSquare
Parameters:
int, int
Returns:
String[]
Method signature:
String[] makeSquare(int n, int d)
(be sure your method is public)

Notes

  • A string S is greater than a string T lexicographically if T is a proper prefix of S, or if S has a greater character at the first position where the strings differ. A space character (' ') is considered smaller than any digit character ('0'-'9').
  • It is guaranteed that there exists an answer for each valid input.

Constraints

  • n will be between 1 and 10, inclusive.
  • d will be between 1 and n, inclusive.

Examples

  1. 3

    3

    Returns: {"0 1 2", "1 2 0", "2 0 1" }

    If d equals n the desired table is called a Latin square. This is the lexicographically smallest Latin square of size 3.

  2. 5

    2

    Returns: {"0 0 0 0 1", "0 0 0 0 1", "0 0 0 0 1", "0 0 0 0 1", "1 1 1 1 0" }

  3. 5

    4

    Returns: {"0 0 1 2 3", "0 0 1 2 3", "1 1 0 3 2", "2 2 3 0 1", "3 3 2 1 0" }

  4. 9

    7

    Returns: {"0 0 0 1 2 3 4 5 6", "0 0 0 1 2 3 4 5 6", "0 0 0 1 2 3 4 5 6", "1 1 1 0 3 2 5 6 4", "2 2 2 3 0 1 6 4 5", "3 3 3 4 5 6 0 1 2", "4 4 4 2 6 5 1 0 3", "5 5 5 6 1 4 2 3 0", "6 6 6 5 4 0 3 2 1" }

  5. 10

    10

    Returns: {"0 1 2 3 4 5 6 7 8 9", "1 0 3 2 5 4 7 6 9 8", "2 3 0 1 6 7 8 9 4 5", "3 2 1 0 7 6 9 8 5 4", "4 5 6 7 8 9 0 1 2 3", "5 4 7 6 9 8 1 0 3 2", "6 7 8 9 2 3 4 5 0 1", "7 6 9 8 3 2 5 4 1 0", "8 9 4 5 0 1 2 3 6 7", "9 8 5 4 1 0 3 2 7 6" }

  6. 1

    1

    Returns: {"0" }

  7. 2

    1

    Returns: {"0 0", "0 0" }

  8. 2

    2

    Returns: {"0 1", "1 0" }

  9. 4

    3

    Returns: {"0 0 1 2", "0 0 1 2", "1 1 2 0", "2 2 0 1" }

  10. 4

    4

    Returns: {"0 1 2 3", "1 0 3 2", "2 3 0 1", "3 2 1 0" }

  11. 5

    3

    Returns: {"0 0 0 1 2", "0 0 0 1 2", "0 0 0 1 2", "1 1 1 2 0", "2 2 2 0 1" }

  12. 5

    5

    Returns: {"0 1 2 3 4", "1 0 3 4 2", "2 3 4 0 1", "3 4 1 2 0", "4 2 0 1 3" }

  13. 6

    4

    Returns: {"0 0 0 1 2 3", "0 0 0 1 2 3", "0 0 0 1 2 3", "1 1 1 0 3 2", "2 2 2 3 0 1", "3 3 3 2 1 0" }

  14. 6

    6

    Returns: {"0 1 2 3 4 5", "1 0 3 2 5 4", "2 3 4 5 0 1", "3 2 5 4 1 0", "4 5 0 1 2 3", "5 4 1 0 3 2" }

  15. 7

    1

    Returns: {"0 0 0 0 0 0 0", "0 0 0 0 0 0 0", "0 0 0 0 0 0 0", "0 0 0 0 0 0 0", "0 0 0 0 0 0 0", "0 0 0 0 0 0 0", "0 0 0 0 0 0 0" }

  16. 7

    5

    Returns: {"0 0 0 1 2 3 4", "0 0 0 1 2 3 4", "0 0 0 1 2 3 4", "1 1 1 0 3 4 2", "2 2 2 3 4 0 1", "3 3 3 4 1 2 0", "4 4 4 2 0 1 3" }

  17. 7

    6

    Returns: {"0 0 1 2 3 4 5", "0 0 1 2 3 4 5", "1 1 0 3 2 5 4", "2 2 3 4 5 0 1", "3 3 2 5 4 1 0", "4 4 5 0 1 2 3", "5 5 4 1 0 3 2" }

  18. 7

    7

    Returns: {"0 1 2 3 4 5 6", "1 0 3 2 5 6 4", "2 3 0 1 6 4 5", "3 4 5 6 0 1 2", "4 2 6 5 1 0 3", "5 6 1 4 2 3 0", "6 5 4 0 3 2 1" }

  19. 8

    2

    Returns: {"0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 1", "1 1 1 1 1 1 1 0" }

  20. 8

    5

    Returns: {"0 0 0 0 1 2 3 4", "0 0 0 0 1 2 3 4", "0 0 0 0 1 2 3 4", "0 0 0 0 1 2 3 4", "1 1 1 1 0 3 4 2", "2 2 2 2 3 4 0 1", "3 3 3 3 4 1 2 0", "4 4 4 4 2 0 1 3" }

  21. 8

    6

    Returns: {"0 0 0 1 2 3 4 5", "0 0 0 1 2 3 4 5", "0 0 0 1 2 3 4 5", "1 1 1 0 3 2 5 4", "2 2 2 3 4 5 0 1", "3 3 3 2 5 4 1 0", "4 4 4 5 0 1 2 3", "5 5 5 4 1 0 3 2" }

  22. 8

    7

    Returns: {"0 0 1 2 3 4 5 6", "0 0 1 2 3 4 5 6", "1 1 0 3 2 5 6 4", "2 2 3 0 1 6 4 5", "3 3 4 5 6 0 1 2", "4 4 2 6 5 1 0 3", "5 5 6 1 4 2 3 0", "6 6 5 4 0 3 2 1" }

  23. 8

    8

    Returns: {"0 1 2 3 4 5 6 7", "1 0 3 2 5 4 7 6", "2 3 0 1 6 7 4 5", "3 2 1 0 7 6 5 4", "4 5 6 7 0 1 2 3", "5 4 7 6 1 0 3 2", "6 7 4 5 2 3 0 1", "7 6 5 4 3 2 1 0" }

  24. 9

    3

    Returns: {"0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 1 2", "1 1 1 1 1 1 1 2 0", "2 2 2 2 2 2 2 0 1" }

  25. 9

    4

    Returns: {"0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 1 2 3", "1 1 1 1 1 1 0 3 2", "2 2 2 2 2 2 3 0 1", "3 3 3 3 3 3 2 1 0" }

  26. 9

    5

    Returns: {"0 0 0 0 0 1 2 3 4", "0 0 0 0 0 1 2 3 4", "0 0 0 0 0 1 2 3 4", "0 0 0 0 0 1 2 3 4", "0 0 0 0 0 1 2 3 4", "1 1 1 1 1 0 3 4 2", "2 2 2 2 2 3 4 0 1", "3 3 3 3 3 4 1 2 0", "4 4 4 4 4 2 0 1 3" }

  27. 9

    6

    Returns: {"0 0 0 0 1 2 3 4 5", "0 0 0 0 1 2 3 4 5", "0 0 0 0 1 2 3 4 5", "0 0 0 0 1 2 3 4 5", "1 1 1 1 0 3 2 5 4", "2 2 2 2 3 4 5 0 1", "3 3 3 3 2 5 4 1 0", "4 4 4 4 5 0 1 2 3", "5 5 5 5 4 1 0 3 2" }

  28. 10

    8

    Returns: {"0 0 0 1 2 3 4 5 6 7", "0 0 0 1 2 3 4 5 6 7", "0 0 0 1 2 3 4 5 6 7", "1 1 1 0 3 2 5 4 7 6", "2 2 2 3 0 1 6 7 4 5", "3 3 3 2 1 0 7 6 5 4", "4 4 4 5 6 7 0 1 2 3", "5 5 5 4 7 6 1 0 3 2", "6 6 6 7 4 5 2 3 0 1", "7 7 7 6 5 4 3 2 1 0" }

  29. 9

    8

    Returns: {"0 0 1 2 3 4 5 6 7", "0 0 1 2 3 4 5 6 7", "1 1 0 3 2 5 4 7 6", "2 2 3 0 1 6 7 4 5", "3 3 2 1 0 7 6 5 4", "4 4 5 6 7 0 1 2 3", "5 5 4 7 6 1 0 3 2", "6 6 7 4 5 2 3 0 1", "7 7 6 5 4 3 2 1 0" }

  30. 9

    9

    Returns: {"0 1 2 3 4 5 6 7 8", "1 0 3 2 5 4 7 8 6", "2 3 0 1 6 7 8 4 5", "3 2 1 0 7 8 5 6 4", "4 5 6 7 8 0 1 2 3", "5 4 7 8 0 6 2 3 1", "6 7 8 4 1 2 3 5 0", "7 8 5 6 3 1 4 0 2", "8 6 4 5 2 3 0 1 7" }

  31. 10

    1

    Returns: {"0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0" }

  32. 10

    2

    Returns: {"0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 0 1", "1 1 1 1 1 1 1 1 1 0" }

  33. 10

    3

    Returns: {"0 0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 0 1 2", "0 0 0 0 0 0 0 0 1 2", "1 1 1 1 1 1 1 1 2 0", "2 2 2 2 2 2 2 2 0 1" }

  34. 10

    4

    Returns: {"0 0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 0 1 2 3", "0 0 0 0 0 0 0 1 2 3", "1 1 1 1 1 1 1 0 3 2", "2 2 2 2 2 2 2 3 0 1", "3 3 3 3 3 3 3 2 1 0" }

  35. 10

    5

    Returns: {"0 0 0 0 0 0 1 2 3 4", "0 0 0 0 0 0 1 2 3 4", "0 0 0 0 0 0 1 2 3 4", "0 0 0 0 0 0 1 2 3 4", "0 0 0 0 0 0 1 2 3 4", "0 0 0 0 0 0 1 2 3 4", "1 1 1 1 1 1 0 3 4 2", "2 2 2 2 2 2 3 4 0 1", "3 3 3 3 3 3 4 1 2 0", "4 4 4 4 4 4 2 0 1 3" }

  36. 10

    6

    Returns: {"0 0 0 0 0 1 2 3 4 5", "0 0 0 0 0 1 2 3 4 5", "0 0 0 0 0 1 2 3 4 5", "0 0 0 0 0 1 2 3 4 5", "0 0 0 0 0 1 2 3 4 5", "1 1 1 1 1 0 3 2 5 4", "2 2 2 2 2 3 4 5 0 1", "3 3 3 3 3 2 5 4 1 0", "4 4 4 4 4 5 0 1 2 3", "5 5 5 5 5 4 1 0 3 2" }

  37. 10

    7

    Returns: {"0 0 0 0 1 2 3 4 5 6", "0 0 0 0 1 2 3 4 5 6", "0 0 0 0 1 2 3 4 5 6", "0 0 0 0 1 2 3 4 5 6", "1 1 1 1 0 3 2 5 6 4", "2 2 2 2 3 0 1 6 4 5", "3 3 3 3 4 5 6 0 1 2", "4 4 4 4 2 6 5 1 0 3", "5 5 5 5 6 1 4 2 3 0", "6 6 6 6 5 4 0 3 2 1" }

  38. 10

    9

    Returns: {"0 0 1 2 3 4 5 6 7 8", "0 0 1 2 3 4 5 6 7 8", "1 1 0 3 2 5 4 7 8 6", "2 2 3 0 1 6 7 8 4 5", "3 3 2 1 0 7 8 5 6 4", "4 4 5 6 7 8 0 1 2 3", "5 5 4 7 8 0 6 2 3 1", "6 6 7 8 4 1 2 3 5 0", "7 7 8 5 6 3 1 4 0 2", "8 8 6 4 5 2 3 0 1 7" }

  39. 3

    1

    Returns: {"0 0 0", "0 0 0", "0 0 0" }

  40. 3

    2

    Returns: {"0 0 1", "0 0 1", "1 1 0" }

  41. 4

    1

    Returns: {"0 0 0 0", "0 0 0 0", "0 0 0 0", "0 0 0 0" }

  42. 4

    2

    Returns: {"0 0 0 1", "0 0 0 1", "0 0 0 1", "1 1 1 0" }

  43. 5

    1

    Returns: {"0 0 0 0 0", "0 0 0 0 0", "0 0 0 0 0", "0 0 0 0 0", "0 0 0 0 0" }

  44. 6

    1

    Returns: {"0 0 0 0 0 0", "0 0 0 0 0 0", "0 0 0 0 0 0", "0 0 0 0 0 0", "0 0 0 0 0 0", "0 0 0 0 0 0" }

  45. 6

    2

    Returns: {"0 0 0 0 0 1", "0 0 0 0 0 1", "0 0 0 0 0 1", "0 0 0 0 0 1", "0 0 0 0 0 1", "1 1 1 1 1 0" }

  46. 6

    3

    Returns: {"0 0 0 0 1 2", "0 0 0 0 1 2", "0 0 0 0 1 2", "0 0 0 0 1 2", "1 1 1 1 2 0", "2 2 2 2 0 1" }

  47. 6

    5

    Returns: {"0 0 1 2 3 4", "0 0 1 2 3 4", "1 1 0 3 4 2", "2 2 3 4 0 1", "3 3 4 1 2 0", "4 4 2 0 1 3" }

  48. 7

    2

    Returns: {"0 0 0 0 0 0 1", "0 0 0 0 0 0 1", "0 0 0 0 0 0 1", "0 0 0 0 0 0 1", "0 0 0 0 0 0 1", "0 0 0 0 0 0 1", "1 1 1 1 1 1 0" }

  49. 7

    3

    Returns: {"0 0 0 0 0 1 2", "0 0 0 0 0 1 2", "0 0 0 0 0 1 2", "0 0 0 0 0 1 2", "0 0 0 0 0 1 2", "1 1 1 1 1 2 0", "2 2 2 2 2 0 1" }

  50. 7

    4

    Returns: {"0 0 0 0 1 2 3", "0 0 0 0 1 2 3", "0 0 0 0 1 2 3", "0 0 0 0 1 2 3", "1 1 1 1 0 3 2", "2 2 2 2 3 0 1", "3 3 3 3 2 1 0" }

  51. 8

    1

    Returns: {"0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0" }

  52. 8

    3

    Returns: {"0 0 0 0 0 0 1 2", "0 0 0 0 0 0 1 2", "0 0 0 0 0 0 1 2", "0 0 0 0 0 0 1 2", "0 0 0 0 0 0 1 2", "0 0 0 0 0 0 1 2", "1 1 1 1 1 1 2 0", "2 2 2 2 2 2 0 1" }

  53. 8

    4

    Returns: {"0 0 0 0 0 1 2 3", "0 0 0 0 0 1 2 3", "0 0 0 0 0 1 2 3", "0 0 0 0 0 1 2 3", "0 0 0 0 0 1 2 3", "1 1 1 1 1 0 3 2", "2 2 2 2 2 3 0 1", "3 3 3 3 3 2 1 0" }

  54. 9

    1

    Returns: {"0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0" }

  55. 9

    2

    Returns: {"0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", "1 1 1 1 1 1 1 1 0" }


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: