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.