• 締切済み

魔方陣のように数字を入れる総パターン

□□□□ 4 □□□□ 4 □□□□ 4 □□□□ 4 4 4 4 4 こんな感じで4×4のマスを置いて、 このマスの中に0-4の数字を自由に入れる ただし、すべてのマスに数字を入れたときの縦横の数字合計が すべて4ずつになるパターンはどれだけ作れるでしょうか? 単純に組み合わせの要領で計算しようとすると二方向へ対処する事が出来ませんでした。 どのようにすれば解くことが出来ますか?

みんなの回答

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

プログラムを組んで総当たりで調べるのが一番早いでしょうね。 エクセルのVBAでコードを書いてみたら、10147通りありました。 計算で出すとしたら、とりあえず2つの方法が浮かびました。 1つは、 4×4のマスを、2×2の4つに分割して、 2×2の数の合計の組み合わせを考えると、次の9通りになります。 80  71  62  53  44  35  26  17  08 08  17  26  35  44  53  62  71  80 2×2の数の合計が8になる組み合わせは、 40  31  22  13  04 04  13  22  31  40 の5通りなので、 80 08 になる組み合わせの数は、5×5=25通り 2×2の数の合計が7になる組み合わせは、 40  31  31  30  30  22  21 ・・・・ 03  12  03  13  04  21  22 ・・・・ などの16通りあり、 71 17 になる組み合わせの数は、7になる組み合わせが決まれば、1になる組み合わせも確定するので、16×16=256通り というようにしていけば計算できます。 ただし、 62 26 の組み合わせは、6になる組み合わせが決まっても、2に組み合わせも複数あるかもしれないので、計算はさらに複雑になります。 もうひとつの方法は、 まず、マスの中に0か1の数字を入れて、縦横の合計が1になる組み合わせを考えます。 例えば、 1000 0100 0010 0001 や 1000 0100 0001 0010 などです。 他にも、各行を入れ替えたものも条件を満たすので、 全部で4!=24通りあります。 マスの中に0-4の数字を入れて、縦横の合計が4になる組み合わせは、 上記の24種類の中から4つ選んで足したのもになります。 例えば、 1000 0100 0010 0001 を4つ足せば、 4000 0400 0040 0004 になります。 その組み合わせの数は、24種類の中から4つ選ぶ重複組み合わせなので、 24H4=27C4=17550通り ただし、この17550通りの中には、重複してカウントしているものがあります。 例えば、 1100 1100 0011 0011 は、 1000 0100 0010 0001 と 0100 1000 0001 0010 を足した場合と、 1000 0100 0001 0010 と 0100 1000 0010 0001 を足した場合の2通りあるので、この重複している分を差し引く必要があります。 どちらの方法にしてもかなりの時間をかけて丁寧に調べないと解けないでしょう。

mizutaki
質問者

お礼

ありがとうございます 2*2へ分割するという方法は目に鱗ですが、 組み合わせ的にはどうにもならない部分が出てしまうのですね。 ふと思いついたような問題なのに、かなり奥が深そう