Magic Square
13 February 2025
A solution to the Magic Square Kata described at Awesome Katas.
Solution
""" magic_square.py """
# usage: python3 magic_square.py < values
import sys
from itertools import permutations
with sys.stdin as infile:
values = [float(i) for i in infile.read().split()]
for v in permutations(values):
rows = {sum(v[i * 3:i * 3 + 3]) for i in range(3)}
cols = {sum(v[j * 3 + i] for j in range(3)) for i in range(3)}
diags = {v[0] + v[4] + v[8], v[2] + v[4] + v[6]}
magic = rows | cols | diags
if len(magic) > 1:
continue
for i in range(3):
print(v[i * 3:i * 3 + 3])
print()