Isenção de responsabilidade: não conheço nenhuma solução que não seja da bruteforce
Um quadrado graeco-latino é, para dois conjuntos do mesmo comprimento , um arranjo de células, cada um contendo um par único (em todo o quadrado) de um elemento do primeiro conjunto e um elemento do segundo conjunto, de modo que todos os primeiros elementos e todos os segundos elementos dos pares sejam exclusivos em suas linhas e colunas. Os conjuntos mais comuns usados são, como se poderia imaginar, as primeiras letras dos alfabetos grego e latino.
Aqui está uma foto de uma praça greco-latina 4x4:
Os quadrados greco-latinos são tão úteis quanto parecem (o artigo da Wikipedia menciona "design de experimentos, programação de torneios e construção de quadrados mágicos"). Sua tarefa é, dado um número inteiro positivo , gerar um quadrado graeco-latino.
Entrada
Um número inteiro positivo ; é garantido que exista quadrado greco-latino (ou seja, ).
Saída
Um quadrado graeco-latino com comprimento lateral n como uma matriz bidimensional, uma matriz de matrizes, uma matriz achatada ou produzida diretamente.
Notas
- Você não precisa usar os alfabetos grego e latino especificamente; por exemplo, a saída de pares de números inteiros positivos também é permitida.
- Se você optar por usar um alfabeto que não pode ser estendido arbitrariamente, precisará (teoricamente; seu código não precisa terminar antes da morte pelo calor do universo) para suportar um comprimento máximo lateral de pelo menos 20.
Isso é código-golfe , então o código mais curto vence!