O Quadrado Mágico “esburacado”

Vi o puzzle a seguir, e parecia interessante. Por falta de um nome melhor, chamá-lo-ei de “quadrado mágico esburacado”.

Se o leitor quiser tentar resolver, aviso que há spoilers à frente.

Como eu já tinha feito uma rotina que resolve quadrados mágicos de qualquer tamanho, achei que poderia aproveitar algum padrão já existente.

Vide https://asgunzi.github.io/QuadradoMagicoD3/index.html

Entretanto, não foi possível partir para uma solução que utilizasse quadrados mágicos comuns. E também não consegui chegar numa fórmula matemática fechada, que chegue a uma solução.

O jeito foi apelar para os computadores. Mesmo assim, não é tarefa fácil.

O jeito “força bruta” pura chega a 20! (fatorial) combinações. Isso dá o número astronômico de 2,4*10^18 combinações. Computador algum no mundo consegue resolver.

O que fiz foi usar a estrutura do problema para diminuir drasticamente o número de combinações. Uma “força bruta” refinada…

Imagine fatiar o problema. Resolver somente a primeira linha.

Se olhar só para a primeira linha, há 20 números possíveis, e a combinação de 4 delas tem que somar 42.

O Python tem algumas rotinas de combinações e permutações que vêm bem a calhar. Elas geram todas as combinações possíveis.

   #Passo 0:
   comb = itertools.combinations(setNumbers,4)
   
   for c in comb:
       if sum(c)==42:
          #Faz alguma coisa

Esse código vai descartar uma combinação errada (digamos, [1,2,3,4]) e vai ficar com uma combinação correta (ex. [1, 2, 20,19]).

Dada essa combinação correta, ainda assim há todas as permutações possíveis dela (ex. [1,20, 19, 2], [20,19,2,1] ) a checar.

permut1 = list(itertools.permutations(c)) #Código para gerar permutações

Isso dá comb(20,4)*permut(4) = 116 mil

Para cada combinação possível da primeira linha, agora vamos tentar encaixar a primeira coluna:

São três espaços vazios, para encaixar 16 números (ou seja, 20 iniciais – 4 da primeira linha). A soma da coluna tem que dar 42.

O resto do procedimento é igual. Dá comb(16,3)*permut(3) = 3360.

Uma nota importante. Das 116 mil, somente uma fração preenche o critério da soma ser 42. Portanto, esses 3360 testes não são aplicados aos 116 mil, somente ao que passou. Ainda assim, dá um número enorme, mas dessa forma, vamos restringindo o problema.

A seguir, tento preencher a diagonal. Isso porque ela tem só duas casas vazias. É um espaço menor de busca de combinações, mais fácil. Vamos restringindo o problema aos poucos.

A seguir, a segunda coluna.

E assim, sucessivamente.

Com isso, a rotina chegou à diversas soluções:

6910017
0202137
1850163
1481910
40111215

Ou:

1219020
0181239
11160105
1764150
1307148

Ou:

2417019
020589
10150161
1831470
12061113

Na verdade, a rotina mostrou mais de 30 mil soluções (tinha várias permutações simples das soluções mostradas, e até repetidas).

Mesmo não tendo a elegância de ter solução única, é um desafio computacional interessante.

Download do código (em Python): https://github.com/asgunzi/QuadradoMagicoEsburacado

Veja também:

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

Quadrados mágicos ímpares

Quadrados mágicos são quadrados preenchidos com números sequenciais, de forma que a soma das linhas e colunas são iguais.

Exemplo: temos os números de 1 a 9 no quadrado, e a soma de cada linha ou coluna é 15.

Quadrado1.JPG

Parece difícil criar um negócio desses. Há uma forma mais ou menos intuitiva de ver esses quadrados mágicos. É isso que vou explicar agora.


Diagonais

Tudo começa com uma diagonal preenchida com 1, assim.

Quadrado2.JPG

Isto é o que os caras que manjam de matemática chamam de “matriz identidade”.

Ela obviamente tem a propriedade da soma das linhas e colunas ser 1, já que os números ficam na diagonal e uma linha ou coluna só contém este mesmo número.

Uma matriz assim com o número 2 e o número 3 também têm a mesma propriedade da soma das linhas e colunas serem iguais.

Quadrado3.JPG

Temos um bom ponto de partida para montar algo mais complicado.

Já que esta matriz é tão legal, que tal juntar uma na outra, na diagonal?

Quadrado4.JPG

Considerando que temos que montar um quadrado, vamos pintar o quadrado no centro desta estrutura. Aproveitamos para pintar de azul e verde os caras que não encaixam no quadrado.

Quadrado5.JPG

Mas, se a gente imaginar a tela não como um plano, mas como um “globo terrestre”, é como se os números que atravessarem o leste fossem parar no oeste, e os que atravessarem o oeste fossem parar no leste. Vamos fazer de conta que eles deram a volta ao mundo.

Quadrado6.JPG

Para fechar, os números que derem a volta no pólo norte vão parar no pólo sul, e vice-versa.

Quadrado7.JPG

Chegamos numa configuração interessante: a soma das linhas e colunas dá 6.

Quadrado8.JPG

Mas queremos números de 1 a 9, e não de 1 a 3. Vamos consertar isto. Se eu somar um número qualquer a alguma linha das matrizes diagonais, não mudarei a propriedade das linhas e colunas iguais, porque é como se eu estivesse somando um número à diagonal.

Quadrado9.JPG

Se eu somar 3 à segunda linha das matrizes diagonais, e 6 à terceira linha, terei os números de 1 a 9.

Quadrado10.JPG

Fazendo o mesmo processo de juntar,  pintar,

Transladar no sentido horizontal, e transladar no sentido vertical,

Quadrado11.JPG

Chegamos no quadrado mágico!

Quadrado1.JPG

Outra propriedade interessante.

Colocando os números de 1 a 9 em ordem:

Simetria_num.JPG

O número 5 divide os números de forma equidistante.

Portanto, o 5 sempre tem que ficar no meio do quadrado mágico.

Um quadrado mágico mapeado a partir da equidistância do 5 fica assim:

Quadrado12.JPG

Com o zero no meio e valores simétricos (-1 e +1), (-2 e +2), etc.


Quadrados maiores

Este processo é válido para qualquer quadrado mágico de lado ímpar – o de lado par destrói a estrutura de simetria em torno do número central.

Por exemplo, para um quadrado 5 x 5, temos.

Diagonais:

Quadrado13.JPG

Diagonais com os números corretos

Quadrado14.JPG

Compondo as diagonais e pintando

Quadrado15.JPG

Transladando lateralmente

Quadrado16.JPG

Transladando verticalmente

Quadrado17.JPG

E temos um quadrado 5×5:

Quadrado18.JPG

Nota: olhando para a explicação, pode parecer fácil, natural. Mas fiquei vários dias pensando em como essas simetrias se encaixavam, etc.

Disponibilizei neste link uma rotina em Excel Vba que automatiza os passos descritos.

Para os quadrados pares, um dia faço alguma explicação e coloco aqui.

Arnaldo Gunzi

Veja também:

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

https://ideiasesquecidas.com/2020/05/08/como-criar-um-quadrado-magico-de-qualquer-tamanho/


Nota:

O grande matemático indiano Ramanujan foi um gênio. Estudou sozinho e fez descobertas brilhantes, de nível mundial. É nele que se inspirou o filme “Gênio indomável”.

mathematical-genius-srinivasa-ramanujan-652x400-3-1443443542_350x163.jpg

Ramanujan escreveu vários quadrados mágicos em seus “blocos de notas”. Muito do que ele escreveu nesses blocos de notas permanece incompreensível até hoje. – portanto estas brincadeiras são para gente graúda também.

Note 2-6.jpg