Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Magic Square solution in Uncategorized category for Magic Square by capback250
# migrated from python 2.7
from itertools import chain
def validator(cors, check=False):
magicNumber = len(cors) * (len(cors)**2 + 1) / 2
rows = [sum(x) for x in cors]
cols = [sum(x) for x in zip(*cors)]
diags = [sum([cors[x][x] for x in range(len(cors))]),
sum([cors[x][len(cors) - x - 1] for x in range(len(cors))])]
return all([x <= magicNumber for x in chain(rows, cols, diags)]) if check else \
set(chain(rows, cols,diags)) == set([magicNumber])
def firstZero(cors):
for i in range(len(cors)):
for j in range(len(cors)):
if not cors[i][j]:
return [(i, j, c) for c in set(range(1, len(cors) ** 2 + 1)) - set(sum(cors, [])) - set([0])]
return []
def checkio(data):
if validator(data):
return data
if not validator(data, True):
return None
for i, j, c in firstZero(data):
data[i][j] = c
if checkio(data):
return data
data[i][j] = 0
Feb. 17, 2016