• ベストアンサー

一般的な解法を用いないで魔法陣を解く、実用的なアルゴリズムは?

 このカテゴリーでいいのでしょうか。  魔法陣の作り方は、教えて!gooでも解説があります。一般的な解法があるようですが、そういった解法を使わないで、魔法陣をつくるアルゴリズムは、どのようにしたらいいでしょうか。  全ての場合をしらみつぶしに調べていくという方法では、nxnの魔法陣では、(nxn)!通りに比例する程度のステップを繰り返すことが必要になりそうで、nが少し大きくなると、実用の範囲内の時間でみつけるのは難しそうです。  一般的な解法を用いないで魔法陣を解く、実用的なアルゴリズムを教えてください。  

質問者が選んだベストアンサー

  • ベストアンサー
  • aminouchi
  • ベストアンサー率46% (376/804)
回答No.2

えーと、5×5のような奇数の場合にだけ使える方法です。 文字だけで説明するのはちょっと難しいですが、5×5であるとして はじめに5×5の枠(図の■)をかきます。その外に下の図のように枠を足します。(図のB。なお□は図をそろえる為のものです) □□□□B □□□BBB □□■■■■■ □B■■■■■B BB■■■■■BB □B■■■■■B □□■■■■■ □□□BBB □□□□B そこへ一番上の頂点から斜めに数字を1から書くのですが、 □□□□1 □□□2□6 □□3■7■11 □4■8■12■16 5□9■13■17□21 □10■14A18■22 □□15■19■23 □□□20□24 □□□□25 もとの5×5の枠からはみ出ている数字を反対側の■に書き込みます。 つまり、上の図で1はAに入れるというようにします。そうすると   3,20,7,24,11   16,8,25,12,4   9,21,13,5,17   22,14,1,18,10   15,2,19,6,23 という魔法陣が完成して、縦・横・斜めどこも和は65となります。 文字で書くと難しいかも知れませんが、紙に書くとすぐ判ります。 こんな方法でよろしいかと思うのですが。

その他の回答 (1)

noname#30727
noname#30727
回答No.1

単純に計算すると、4×4 の時ですら、(4^2)! = 20,922,789,888,000 ですから、この時点で実用的でないですよね。最初の一行のうちの3つの数字の和が 18 未満のものと 34 以上になるものを省き、1つ足して、最初の一行の和が 34 にならないものを省き・・・と繰り返していけば、ずいぶん減って実用の範囲内に収まるかもしれません。 それでも 5×5 は無理っぽいです。 何か方法があるとすれば、囲碁のAIなども人間を遙かに超えているだろうから、無いと考えるのが無難なのじゃないかと思います。

関連するQ&A

  • この数列の一般項の求め方

    2^2,4^2,6^2,8^2,・・・・ 簡単な数列なのですが、一般項の求め方で悩んでいます。 しらみつぶしではない解法です。 答えはan=(2n)^2です。 等比数列だからar^n-1=anに当てはめるのでしょうか?

  • 技術書籍にあるアルゴリズムで特許侵害になり得ますか

    学術論文ではなく、一般の本屋さんで売られている技術書籍にて解説されているアルゴリズムを使用して特許侵害になることは一般にあるのでしょうか。 下記の書籍の著者は電機メーカN社の研究者のようですが、 書籍で記載されているアルゴリズムについて調べてみると特許が出されているようないないような、よくわからない感じです。 しかしながら、一般書籍に解説されているアルゴリズムを使って特許侵害になってしまったら罠もいいところです。そういうことはあり得るのでしょうか。 https://www.amazon.co.jp/データマイニングによる異常検知-山西-健司/dp/4320018826 よろしくお願いいたします。

  • アルゴリズムによる整列方法について

    以下の問題を授業外課題として出されましたがわかりません。身近に分かる人物もいません。 先生も答えてくれません。 解答お待ちしております。 1.以下の文章の空欄を埋めよ.但し,((14)),((15)) については,選択肢から最も適切なものを選び,記号で答えよ.加えて,解答の過程を詳しく述べよ。 高速な整列として以下のアルゴリズムによる方法を考える.以下では,整数データを昇順に配列するも のとする. 前段階として,データを半々に二つのグループ I と II に分割し,それぞれを独立に整列する. while (両グループに要素が残っている) do    if (グループ I の最小要素 < グループ II の最小要素)    then  グループ I の最小要素を出力場所に移し,グループ I からは削除する    else  グループ II の最小要素を出力場所に移し,グループ II からは削除する    endif done while (グループ I に要素が残っている) do  グループ I の要素を出力場所に移し,グループ I からは削除する done while (グループ II に要素が残っている) do  グループ II の要素を出力場所に移し,グループ II からは削除する done この整列に要する計算量 T(n) を求める.但し,n は整列するデータの量である.前段階の整列では,半分のデータ量の整列を 2 回行うので ((1)) だけの計算を要する.次に,3 個の while 反復のいずれについても, 「反復を 1 回行うごとに要素が一つだけ出力場所に移動する」 ことから,3 個を合計すると反復の中身は正確に ((2)) 回実行されることが分かる.1 回の実行に a だけの時間がかかるものとすれば,全体で ((3)) となる.従って次の関係式が成り立つ. T(n) = ((4)) 簡単のため,n = 2^p であるとすると, T(n) = ((5))×T(2^((6)) ) + ((7))    = ((8)) × T(2^((9)) ) + 2 × ((7))    ・    ・    ・    = ((10)) × T(2^0) + ((11)) T(2^0) = ((12)) なので,T(n) を a と n のみを用いて表すと, T(n) = ((13)) であり,これは, ((14)) に比例し,計算量のオーダーは ((15)) といえる. ((14)),((15)) の選択肢 a. n b. n^2 c. 2^n d. n log n e. log n f. いわゆる「指数オーダー」であり,アルゴリズムとして全く実用に耐えない g. いわゆる「バカソート」と同じであり,n がごく小さい場合を除いて実用には適さない h. 経験上最速とされるソート法には及ばないが,それほど大きくない n に対しては実用に耐える i. 経験上最速とされるソート法と同じであり,十分大きい n に対しても実用に耐える

  • 整数nの範囲

    103<=126n<=1002 で、これを満たす整数nの範囲を求める方法の解説を分かりやすく教えてください。 問題集の解説では、この後、すべての辺を126で割って103/126<=n<=7 60/63という解法解説が載っていますが、いまいちわかりません。 似たような問題で、-8<=12n<=91 もお願いします。

  • 魔法陣

    6×6の魔法陣の作り方、教えて下さい!3×3、4×4、5×5、7×7、8×8の作り方は分かります。でも、どうしても6×6の魔法陣の作り方が分かりません。お願いします!

  • 魔法陣グルグルについて

    古いアニメについてで申し訳ないのですが、 魔法陣グルグルのアニメは打ち切りだったのでしょうか? 調べてみると打ち切りだとも打ち切りでないとも書かれていたので質問させていただきました。 ドキドキ伝説でない方です。 よろしくお願いします。

  • 魔法陣でしたっけ??

    よく覚えてないんですが、たしか魔法陣って言うと思ったのですが、縦・横・ななめ、どの列を足しても答えが同じになるものなんですけど?? たしか、法則のような解き方を友人から教えてもらったのですが忘れてしまったんで簡単な解き方教えていたでけませんか?(何列・何行あっても・・・)

  • 魔法陣グルグルについて

    魔法陣グルグルについて質問します。この作品は今まで再放送したことがあるのでしょうか? またその再放送した放送局や放送時間を教えてください。

  • 不可解な魔法陣について

    http://sougaku.com/loto6/yosou.htm 上記のページの一番下に魔法陣を作成するプログラムがあります。 普通の魔法陣は1からの連番で作成されていますが、このプログラムでは連番でなくても魔法陣を作成してしまいます。 いったいどのような理論(?)で、このような魔法陣を作成することができるのでしょうか? いろいろと調べてみましたが、連番以外で魔法陣を作成する方法は分かりませんでした。 理論がわかれば、なんとかエクセルで実現させようと思っています。 (エクセルでは不可能かな。。。) どなたかこのような魔法陣の作成方法を御存知の方は、アドバイスをお願いします。

  • 魔法陣

    数学のではありません。 魔学的な魔法陣についてです。 アニメやゲームでは ・召喚獣を呼ぶもの ・悪魔と契約するもの ・神に祈るときに使うもの ・儀式(生贄とか) 等がありますが、 どれが正しいんですか?

専門家に質問してみよう