#!/usr/bin/python3 "Generate the 3×3 magic squares as simply as possible." def permutations(items): if len(items) == 0: yield () return for i in range(len(items)): for permutation in permutations(items[:i] + items[i+1:]): yield (items[i],) + permutation def is_magic(p): mods = [p[:3], p[3:6], p[6:], p[::3], p[1::3], p[2::3], p[::4], p[2:8:2]] sums = [sum(xs) for xs in mods] return all(sumi == sums[0] for sumi in sums) if __name__ == '__main__': [print(p) for p in permutations(list(range(1, 10))) if is_magic(p)]