def eh_quadrado_magico(quadrado):
if len(quadrado[0]) != len(quadrado):
return False
verifica = []
for a in range(len(quadrado)):
verifica += quadrado[a]
if len(verifica) != set(verifica):
return False
lista = []
for i in range(len(quadrado)):
somalinhas = 0
for j in range(len(quadrado[i])):
somalinhas += quadrado[i][j]
lista.append(somalinhas)
for k in range(len(quadrado[0])):
somacolunas = 0
for l in range(len(quadrado)):
somacolunas += quadrado[k][l]
lista.append(somacolunas)
somadiagP = 0
somadiagS = 0
for x in range(len(quadrado)):
for y in range(len(quadrado[x])):
if x == y:
somadiagP += quadrado[x][j]
if x + y == len(quadrado)-1:
somadiagS += quadrado[x][j]
lista.append(somadiagP)
lista.append(somadiagS)
if len(set(lista)) == 1:
return True
else:
return False
ZGVmIGVoX3F1YWRyYWRvX21hZ2ljbyhxdWFkcmFkbyk6CiAgICBpZiBsZW4ocXVhZHJhZG9bMF0pICE9IGxlbihxdWFkcmFkbyk6CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgdmVyaWZpY2EgPSBbXQogICAgZm9yIGEgaW4gcmFuZ2UobGVuKHF1YWRyYWRvKSk6CiAgICAgICAgdmVyaWZpY2EgKz0gcXVhZHJhZG9bYV0KICAgIGlmIGxlbih2ZXJpZmljYSkgIT0gc2V0KHZlcmlmaWNhKToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBsaXN0YSA9IFtdCiAgICBmb3IgaSBpbiByYW5nZShsZW4ocXVhZHJhZG8pKToKICAgICAgICBzb21hbGluaGFzID0gMAogICAgICAgIGZvciBqIGluIHJhbmdlKGxlbihxdWFkcmFkb1tpXSkpOgogICAgICAgICAgICBzb21hbGluaGFzICs9IHF1YWRyYWRvW2ldW2pdCiAgICAgICAgbGlzdGEuYXBwZW5kKHNvbWFsaW5oYXMpCgogICAgZm9yIGsgaW4gcmFuZ2UobGVuKHF1YWRyYWRvWzBdKSk6CiAgICAgICAgc29tYWNvbHVuYXMgPSAwCiAgICAgICAgZm9yIGwgaW4gcmFuZ2UobGVuKHF1YWRyYWRvKSk6CiAgICAgICAgICAgIHNvbWFjb2x1bmFzICs9IHF1YWRyYWRvW2tdW2xdCiAgICAgICAgbGlzdGEuYXBwZW5kKHNvbWFjb2x1bmFzKQoKICAgIHNvbWFkaWFnUCA9IDAKICAgIHNvbWFkaWFnUyA9IDAKICAgIGZvciB4IGluIHJhbmdlKGxlbihxdWFkcmFkbykpOgogICAgICAgIGZvciB5IGluIHJhbmdlKGxlbihxdWFkcmFkb1t4XSkpOgogICAgICAgICAgICBpZiB4ID09IHk6CiAgICAgICAgICAgICAgICBzb21hZGlhZ1AgKz0gcXVhZHJhZG9beF1bal0KICAgICAgICAgICAgaWYgeCArIHkgPT0gbGVuKHF1YWRyYWRvKS0xOgogICAgICAgICAgICAgICAgc29tYWRpYWdTICs9IHF1YWRyYWRvW3hdW2pdCgogICAgbGlzdGEuYXBwZW5kKHNvbWFkaWFnUCkKICAgIGxpc3RhLmFwcGVuZChzb21hZGlhZ1MpCgogICAgaWYgbGVuKHNldChsaXN0YSkpID09IDE6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIEZhbHNl