Skip to content
Related Articles
Latin Square
• Difficulty Level : Basic
• Last Updated : 18 May, 2021

A Latin Square is a n x n grid filled by n distinct numbers each appearing exactly once in each row and column. Given an input n, we have to print a n x n matrix consisting of numbers from 1 to n each appearing exactly once in each row and each column.
Examples :

```Input: 3
Output:  1 2 3
3 1 2
2 3 1

Input: 5
Output:  1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1```

Did you find any pattern in which the number is stored in a Latin Square?

• In the first row, the numbers are stored from 1 to n serially.
• In the second row, the numbers are shifted to the right by one column. i.e, 1 is stored at 2nd column now and so on.
• In the third row, the numbers are shifted to the right by two columns. i.e, 1 is stored at 3rd column now and so on.
• We continue the same way for the remaining rows.

Note: There may be more than one possible configuration of a n x n Latin square.

## C++

 `// C++ program to pritn Latin Square``#include` `// Function to print n x n Latin Square``void` `printLatin(``int` `n)``{``    ``// A variable to control the rotation``    ``// point.``    ``int` `k = n+1;` `    ``// Loop to print rows``    ``for` `(``int` `i=1; i<=n; i++)``    ``{``        ``// This loops runs only after first``        ``// iteration of outer loop. It prints``        ``// numbers from n to k``        ``int` `temp = k;``        ``while` `(temp <= n)``        ``{``            ``printf``(``"%d "``, temp);``            ``temp++;``        ``}` `        ``// This loop prints numbers from 1 to k-1.``        ``for` `(``int` `j=1; j

## Java

 `// Java program to pritn Latin Square``class` `GFG {``    ` `    ``// Function to print n x n Latin Square``    ``static` `void` `printLatin(``int` `n)``    ``{``        ` `        ``// A variable to control the``        ``// rotation point.``        ``int` `k = n+``1``;``    ` `        ``// Loop to print rows``        ``for` `(``int` `i = ``1``; i <= n; i++)``        ``{` `            ``// This loops runs only after``            ``// first iteration of outer``            ``// loop. It prints``            ``// numbers from n to k``            ``int` `temp = k;` `            ``while` `(temp <= n)``            ``{``                ``System.out.print(temp + ``" "``);``                ``temp++;``            ``}``    ` `            ``// This loop prints numbers from``            ``// 1 to k-1.``            ``for` `(``int` `j = ``1``; j < k; j++)``                ``System.out.print(j + ``" "``);``    ` `            ``k--;``            ``System.out.println();``        ``}``    ``}``        ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``int` `n = ``5``;``        ` `        ``// Invoking printLatin function``        ``printLatin(n);``    ``}``}` `// This code is contributed by Anant Agarwal.`

## Python 3

 `# Python 3 program to print Latin Square` `# Function to prn x n Latin Square``def` `printLatin(n):` `    ``# A variable to control the``    ``# rotation point.``    ``k ``=` `n ``+` `1` `    ``# Loop to prrows``    ``for` `i ``in` `range``(``1``, n ``+` `1``, ``1``):``    ` `        ``# This loops runs only after first``        ``# iteration of outer loop. It prints``        ``# numbers from n to k``        ``temp ``=` `k``        ``while` `(temp <``=` `n) :``            ``print``(temp, end ``=` `" "``)``            ``temp ``+``=` `1``        ` `        ``# This loop prints numbers``        ``# from 1 to k-1.``        ``for` `j ``in` `range``(``1``, k):``            ``print``(j, end ``=` `" "``)` `        ``k ``-``=` `1``        ``print``()` `# Driver Code``n ``=` `5` `# Invoking printLatin function``printLatin(n)` `# This code is contributed by R_Raj`

## C#

 `// C# program to print Latin Square``using` `System;` `class` `GFG {``    ` `    ``// Function to print n x n``    ``// Latin Square``    ``static` `void` `printLatin(``int` `n)``    ``{``        ` `        ``// A variable to control the``        ``// rotation point.``        ``int` `k = n + 1;``    ` `        ``// Loop to print rows``        ``for` `(``int` `i = 1; i <= n; i++)``        ``{` `            ``// This loops runs only after``            ``// first iteration of outer``            ``// loop. It prints numbers``            ``// from n to k``            ``int` `temp = k;` `            ``while` `(temp <= n)``            ``{``                ``Console.Write(temp + ``" "``);``                ``temp++;``            ``}``    ` `            ``// This loop prints numbers from``            ``// 1 to k-1.``            ``for` `(``int` `j = 1; j < k; j++)``                ``Console.Write(j + ``" "``);``    ` `            ``k--;``            ``Console.WriteLine();``        ``}``    ``}``        ` `    ``// Driver code``    ``public` `static` `void` `Main ()``    ``{``        ``int` `n = 5;``        ` `        ``// Invoking printLatin function``        ``printLatin(n);``    ``}``}` `// This code is contributed by KRV.`

## PHP

 ``

## Javascript

 ``

Output:

```1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1 ```

Reference:
https://en.wikipedia.org/wiki/Latin_square
This article is contributed by Pratik Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer DSA Live Classes

My Personal Notes arrow_drop_up