魔方陣ジェネレーター
奇数サイズ(3×3〜11×11)の魔方陣を生成します。
このツールについて
魔方陣は古典的な娯楽数学のひとつで、すべての行、列、対角線の合計が同じ値になるように相異なる数を並べた正方形の格子です。その共通の合計は魔法定数と呼ばれます。このジェネレーターは任意の奇数次に対して有効な魔方陣を瞬時に作成し、手作業で組み立てる試行錯誤の手間を省きます。
3x3から11x11までの奇数サイズを選んで生成するだけで、すべての行、列、主対角線がまったく同じ合計になります。数のパターンを教えたり、パズルを作ったり、娯楽数学を探求したり、プログラミングの練習問題を試したりするのに便利です。
ヒントとして、奇数次の魔方陣はシャム法で構成され、魔法定数はサイズが大きくなるにつれて着実に増えていきます。すべての処理はブラウザ内でローカルに実行されるため、データが端末の外に出ることはありません。
よくある質問
コード実装
def generate_odd_magic_square(n):
"""Siamese (De la Loubère) method for odd n."""
grid = [[0] * n for _ in range(n)]
row, col = 0, n // 2
for num in range(1, n * n + 1):
grid[row][col] = num
next_row = (row - 1) % n
next_col = (col + 1) % n
if grid[next_row][next_col] != 0:
row = (row + 1) % n
else:
row, col = next_row, next_col
return grid
def magic_constant(n):
return n * (n * n + 1) // 2
for n in [3, 5]:
sq = generate_odd_magic_square(n)
print(f"\n{n}x{n} Magic Square (constant={magic_constant(n)}):")
for row in sq:
print(" ".join(f"{v:3}" for v in row))Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.