魔方陣ジェネレーター
縦・横・対角線のどれを足しても同じ和になる奇数次の魔方陣を作ります。3×3なら和は15、5×5なら65です。3から99までの奇数を選ぶだけで、マス目全体が得られます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 順序
- 3
- 魔方陣定数
- 15
- セル
- 9
奇数次nの魔方陣とは、1からnの2乗までの各整数をちょうど1回ずつ収めたn行n列の格子であり、すべての行・すべての列・両方の主対角線が同じ魔法定数、すなわちn×(nの2乗+1)÷2に等しくなります。この生成器はその格子をシャム法(ド・ラ・ルーベール法とも呼ばれます)で組み立てます。最上行の中央に1を置き、次に1マス上・1マス右へ進み、端では回り込み、次のマスが既に埋まっていれば1マス下へ落とします。必須の入力は奇数の次数だけで、3以上の整数でなければなりません。
シャム法が奇数次の正方形を埋める仕組み
17世紀にシャム滞在のあとシモン・ド・ラ・ルーベールが書き残したシャム法は、あらゆる奇数次に魔方陣が存在することの標準的な構成的証明です。空のn×n盤から始め、第1行の中央マスに整数1を書き込みます。すでにkが入っているマスから、k+1の候補は1行上かつ1列右です。
その一歩が盤の外へ出るときは回り込みます。最上行を出れば同じ列の最下行へ入り、最終列を出れば同じ行の第1列へ入ります。回り込んだ先が既に埋まっている場合(n歩ごとの一周のあとに起きます)は対角の一歩を取らず、現在マスのすぐ下に次の整数を書いてそこから続けます。
nが奇数であるため、この衝突規則は回り込みと衝突せず、nの2乗を置くまでにすべてのマスをちょうど1回ずつ訪れます。完成した格子は魔法的です。各行・各列・両方の長い対角線は魔法定数n×(nの2乗+1)÷2に合計されます。
次数3ではその定数は15で、回転と鏡映を除けば一意な正規方陣は1行目が8・1・6、2行目が3・5・7、3行目が4・9・2です。次数5では定数は65で、1行目は17・24・1・8・15です。
入力契約、応答の形、拒否されるもの
フォームやクエリ文字列が同じ契約を再利用できるよう、別名nとsizeも受け付けます。定義域は3から99までの奇数です。次数1は奇数ですが、人々が探す1からnの2乗までの教室向け魔方陣ではないため、偶数次と同じメッセージで拒否されます。
orderは3以上の奇数整数でなければなりません。4や8のような偶数は同じ理由で失敗します。シャム法の右上歩きは偶数nの完全な構成ではなく、この機能はStracheyやLUXの算法へ黙って切り替えません。
99を超える値は、宣言された上限が99であるため失敗します。任意の出力キーはnullとして送らず省略します。検証失敗は課金されません。
色やアニメーションが必要ならご自身の描画器と組み合わせてください。
奇数次魔方陣ジェネレーターが役立つ場面
教室や個別指導の場では、手で組み立てたばかりの3×3や5×5を、最後の数マスで回り込み誤りをひっくり返さずに検算するために魔方陣ジェネレーターを使います。パズルサイトやワークシート工場は、与えられたnに対して常に同じシャム格子を出す決定的オラクルを必要とし、解答例が再版や言語をまたいで安定します。
娯楽数学のノート、コーディング型カタのフィクスチャ、行列ライブラリの性質テストは、行・列・対角線の和が保存表ではなく閉じた公式である既知の良いラテン風正方形を求めます。不正な入力は残高を消費しません。同じ同型モジュールが両方の経路で動くため、ページでまず次数3を試し、あとでスクリプトで次数7を自動化する教員は、同一のマスを見ます。
偶数次の方陣、シャム格子の回転、任意に埋めた盤の検査が必要なら、それは別の検索意図であり別の機能です。これがあるのは、魔方陣ジェネレーターとして人々が探す奇数次シャム方陣を組み立てるためです。
活用例
教室とワークシートの解答
正準な3×3または5×5のシャム方陣を生成し、学習者が各行・各列・各対角線を印刷された魔法定数と照合できるようにします。
パズルとカタのフィクスチャ
線の和がn(n²+1)/2である決定的なn×n格子でプログラミング課題と性質テストを種付けし、表を埋め込まずに済みます。
釣り合いの取れたゲーム盤
魔方陣から駒や得点を置き、奇数盤の各行・各列・長い対角線が同じ合計を持つようにします。
よくある質問
3×3のシャム方陣はどのような形ですか?
正準な格子は[[8,1,6],[3,5,7],[4,9,2]]です。すべての行・列・両方の主対角線は魔法定数15に合計されます。
生成器は毎回ランダムな回転を選びますか?
いいえ。 歩みは固定です。1は常に最上行の中央から始まり、右上へ進みます。同じ次数は常に同じ二次元配列を返します。
なぜ次数は3以上の奇数でなければならないのですか?
右上へ進むシャム法の手順は、偶数次では完全な魔方陣になりません。また次数1は、一般にいう魔方陣とはみなされないため、3以上の奇数を指定します。
魔法和はどう計算しますか?
nにnの2乗と1の和を掛け、2で割ります。3×3では15、5×5では65になり、各行・各列・2本の対角線の和がすべてこの数になります。
シャム法では数字をどう並べますか?
一番上の行の中央に1を書き、次の数は1つ上・1つ右のマスへ進みます。端からはみ出したら反対側に回り込み、そのマスが埋まっていれば代わりに1つ下へ置きます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/magic-square \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"order":3}'const res = await fetch("https://api.kit.forhosting.com/math/magic-square", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"order": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/magic-square",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"order": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/magic-square", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"order":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"order":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/magic-square", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"order": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.magic_square",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_order | 99 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
偶数次、自明な次数1、分数、公開上限を超える値はinvalid_inputで拒否されます。
シャム法が奇数次の正方形を埋める仕組み
このエンドポイントは常にその正準なシャム向きを出し、無作為な対応やデューラーの偶数次構成は選びません。
入力契約、応答の形、拒否されるもの
必須フィールドは1つだけ、正方形の奇数整数nであるorderを含むJSON本体をPOSTしてください。値はJSON整数でも十進の整数文字列でも構いません。空文字列、欠落フィールド、分数、指数表記、非数値型はorderを名指ししてinvalid_inputになります。成功時、本体はorderをエコーし、squareを各n個の正整数からなるn行の配列として返し、magic_constantをn×(nの2乗+1)÷2として報告し、cellsをnの2乗として報告し、受け取った構成を記録できるようmethodを文字列siameseにします。このエンドポイントが返すのは数値であり、画像ではありません。公開上限内にリクエストを収め、巨大な行列のダンプではなく小さなJSON文書のままにしてください。
奇数次魔方陣ジェネレーターが役立つ場面
ゲーム設計者は、すべての線が釣り合うよう魔方陣から盤を種付けすることがあり、小さなparse APIを呼べば、あとで教科書の歩みからずれる単発実装を埋め込まずに済みます。
技術的な質問
奇数次の魔方陣はどのように生成しますか。
3以上の奇数整数order nを送ってください(別名はnとsize)。APIはシャム法で埋めたn×n格子と、魔法定数n(n²+1)/2を返します。
次数はなぜ3以上の奇数整数でなければならないのですか。
シャム法の右上歩きは奇数nに対してのみ完全な構成です。偶数次と自明な次数1は別算法で埋めず、invalid_inputで拒否します。
魔方陣ジェネレーターの料金はいくらですか。
ブラウザの道具は無料です。API要求は成功1回につき前払い残高から$0.002です。不正な入力は課金されません。