Como criar um quadrado mágico de qualquer tamanho

Quadrados mágicos são números arranjados numa grade, de tal forma que a soma das linhas, colunas e diagonais seja igual.

A questão de como criar diversos tipos de quadrados mágicos vem intrigado os matemáticos há séculos.

Veremos neste tutorial, como criar um quadrado mágico de qualquer tamanho. Implementação em VBA e em Python disponível no Github.

Há três casos diferentes:

- quadrados mágicos ímpares,

- do tipo 4*n

- do tipo 4*n+2

Para cada caso, há um algoritmo diferente.

Caso 1: Quadrados mágicos ímpares

São os que têm número de lado ímpar (3, 5, 7, etc).

Começar colocando o 1 na célula superior do meio. Andar uma casa para a esquerda e uma para cima, para colocar o próximo número. Como o tabuleiro acaba, é como se ele desse a volta e colocasse o número no canto inferior.

Ir repetindo o passo acima, do número 2 para o 3.

Quando a casa em questão já estiver ocupada, como no caso abaixo,

… colocar o próximo número imediatamente abaixo da casa de referência.

Isso é suficiente para gerar qualquer quadrado mágico ímpar.

Ex. quadrado mágico 3×3:

Obs. Devido à simetria, tanto faz ir para a direita ou para a esquerda, no primeiro passo acima.

Padrão de cores: mais claro -> número maior, mais escuro, número menor.

Ex. Quadrado mágico 15×15:

Caso 2: Quadrados de ordem 4*n

Ou seja, quadrados de lado 4, 8, 12, 16, etc.

Colocar os números de 1 a 16 sequencialmente na grade.

Apagar os números da diagonal principal e da diagonal secundária:

Agora, imagine o grid preenchido sequencialmente, mas na ordem inversa:

Neste grid inverso, apagar todos os números que NÃO são das diagonais principal e secundária.

Juntar ambos os quadrados semi-preenchidos, e voilá, temos um quadrado mágico!

Para ordem 8, 12, é similar. É só imaginar um quadrado 8×8 sendo dividido em 4 quadrados 4×4, e para cada quadrado 4×4, aplicar o padrão acima.

Caso 3: Ordem 4*n+2

São quadrados com casas 6, 10, 14, etc, em que os algoritmos acima não funcionam.

Este caso é mais complicado.

A regra utilizada aqui é a LUX, desenvolvida por John Conway (o mesmo do Jogo da Vida).

Dividir o quadrado em grupos de quadrados 2×2.

Exemplo, um quadrado 6×6 pode ser visto como um grupo de 3×3 quadrados 2×2.

Para o grupo de quadrados, dividir assim:

Até a metade de linhas L

1 linha de U

O restante de X

No exemplo de lado 6, não “cabe” a linha X, mas para casos maiores, sim.

Depois, inverter o L central com o U abaixo:

Note que o grupo de quadrados torna-se um quadrado de ordem ímpar (o primeiro algoritmo descrito).

L, U e X referem-se à padrões de preenchimento:

Portanto, o algoritmo é:

- A ordem de preenchimento é como no caso ímpar, para grupos de quadrados 2×2

- Dentro do quadrado 2×2, usar a regra LUX correspondente ao quadrado.

Exemplo: cubo 6×6

No exemplo acima, começo com 1 no meio na linha superior, que é padrão L:

O próximo número é 5, e o local dele é à direita e acima, conforme o algoritmo de lado ímpar. Esta casa corresponde ao padrão U.

O próximo número é o 9, à direita e acima. Agora, é o padrão L.

E assim sucessivamente.

Ex. Quadrado 10×10.

Utilizando os três algoritmos acima, é possível criar quadrados mágicos de qualquer tamanho, digamos 1000 x 1000.

Implementação em VBA e em Python disponível aqui no Github.

Links:

https://en.wikipedia.org/wiki/Siamese_method

https://ideiasesquecidas.com/laboratorio-de-matematica/

https://ideiasesquecidas.com/2016/03/09/quadrados-magicos-impares/

Originally published at https://ideiasesquecidas.com on May 8, 2020.

Project Manager on Analytics and Innovation. “Samurai of Analytics”. Passionate about Combinatorial Optimization, Philosophy and Quantum Computing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store