cuadrado latino

Un cuadrado latino es una cuadrícula llena de n números distintos, cada uno de los cuales aparece exactamente una vez en cada fila y columna. Dada una entrada n, tenemos que imprimir una array xn que consta de números del 1 al n, cada uno de los cuales aparece exactamente una vez en cada fila y cada columna.

Ejemplos: 

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

¿Encontraste algún patrón en el que el número se almacena en un cuadrado latino? 

  • En la primera fila, los números se almacenan del 1 al n en serie.
  • En la segunda fila, los números se desplazan hacia la derecha una columna. es decir, 1 se almacena en la segunda columna ahora y así sucesivamente.
  • En la tercera fila, los números se desplazan a la derecha en dos columnas. es decir, 1 se almacena en la tercera columna ahora y así sucesivamente.
  • Continuamos de la misma manera para las filas restantes.

Nota : Puede haber más de una configuración posible de un cuadrado latino. 

Implementación:

C++

// C++ program to print Latin Square
#include <iostream>
using namespace std;
 
// 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)
        {
            cout << temp << " ";
            temp++;
        }
 
        // This loop prints numbers from 1 to k-1.
        for (int j=1; j<k; j++)
            cout << j << " ";
 
        k--;
        cout << endl;
    }
}
 
// Driver program to test above function
int main(void)
{
    int n = 5;
 
    // Invoking printLatin function
    printLatin(n);
 
    return 0;
}
 
// This code is contributed by kothavvsaakash.

C

// C program to print Latin Square
#include<stdio.h>
 
// 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<k; j++)
            printf("%d ", j);
 
        k--;
        printf("\n");
    }
}
 
// Driver program to test above function
int main(void)
{
    int n = 5;
 
    // Invoking printLatin function
    printLatin(n);
 
    return 0;
}

Java

// Java program to print 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 print n x n Latin Square
def printLatin(n):
 
    # A variable to control the
    # rotation point.
    k = n + 1
 
    # Loop to print rows
    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

<?php
// PHP program to print Latin Square
 
// Function to print n x n Latin Square
function printLatin( $n)
{
    // A variable to control
    // the rotation point.
    $k = $n + 1;
 
    // Loop to print rows
    for ( $i = 1; $i <= $n; $i++)
    {
        // This loops runs only after
        // first iteration of outer loop.
        // It prints numbers from n to k
        $temp = $k;
        while ($temp <= $n)
        {
            echo $temp," ";
            $temp++;
        }
 
        // This loop prints numbers
        // from 1 to k-1.
        for ($j = 1; $j < $k; $j++)
            echo $j, " ";
 
        $k--;
        echo "\n";
    }
}
 
// Driver Code
$n = 5;
 
// Invoking printLatin function
printLatin($n);
 
// This code is contributed by anuj_67.
?>

Javascript

<script>
 
    // Javascript program to print Latin Square
     
    // Function to print n x n
    // Latin Square
    function printLatin(n)
    {
           
        // A variable to control the
        // rotation point.
        let k = n + 1;
       
        // Loop to print rows
        for (let i = 1; i <= n; i++)
        {
   
            // This loops runs only after
            // first iteration of outer
            // loop. It prints numbers
            // from n to k
            let temp = k;
   
            while (temp <= n)
            {
                document.write(temp + " ");
                temp++;
            }
       
            // This loop prints numbers from
            // 1 to k-1.
            for (let j = 1; j < k; j++)
                document.write(j + " ");
       
            k--;
            document.write("</br>");
        }
    }
     
    let n = 5;
           
    // Invoking printLatin function
    printLatin(n);
     
</script>
Producción

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 

Este artículo es una contribución de Pratik Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *