StyleInCode

RSS

 

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()

Categories

Links