Peguei
o seguinte exercício na internet:Quadrado mágico. Um quadrado mágico é aquele dividido em linhas e colunas, com um número em cada posição e no qual a soma das linhas, colunas e diagonais é a mesma. Por exemplo, veja um quadrado mágico de lado 3, com números de 1 a 9:
- Elabore uma função que identifica e mostra na tela todos os quadrados mágicos com as características acima. Dica: produza todas as combinações possíveis e verifique a soma quando completar cada quadrado. Usar um vetor de 1 a 9 parece ser mais simples que usar uma matriz 3x3.
E fiz o seguinte código, lembrando que sou bem iniciante
import random
for i in range(531441):
x = random.sample(range(9),9)
if (x[0]+x[1]+x[2]==x[3]+x[4]+x[5] and x[3]+x[4]+x[5]==x[6]+x[7]+x[8] and x[0]+x[3]+x[6]==x[1]+x[4]+x[7] and x[1]+x[4]+x[7]==x[2]+x[5]+x[8] and x[0]+x[4]+x[8]==x[2]+x[4]+x[6]):
print("\t",x[0],"\t",x[1],"\t",x[2])
print("\t",x[3],"\t",x[4],"\t",x[5])
print("\t",x[6],"\t",x[7],"\t",x[8])
print("\n\n")
E a função até funciona, mas repete muitas vezes o mesmo quadrado e não me garante que todas as combinações possíveis foram mostradas. Alguém sabe alguma forma de modificar a minha função para não repetir ou já tem uma função pronta de quadrado mágico para me enviar?