アインシュタインの問題

 投稿者:山中和義  投稿日:2013年 9月24日(火)16時13分21秒
 
数字の並び位置を、
  ①   ④
 /\  /\
②─③─⑤─⑥
   \/
    ⑦
   /\
   ⑧─⑨
とする。
3x3魔方陣のように、
 ①②③
 ④⑤⑥
 ⑦⑧⑨
と並べると、
題意は、
 3つの行と3つの列と右斜め(すなわち、左斜めを除いた7箇所)の和が一致するもの
と解釈できる。

3x3魔方陣の1つは、
 2  7  6
 9  5  1
 4  3  8
なので、
       3  8  4
    2  7  6  2
 1  9  5  1  9
 8  4  3  8
 6  2  7
とスライドさせた3パターンの配置は題意を満たす。
3x3魔方陣は対称性(回転と鏡面)を考えると8通りあるから、3*8=24通り。

No.20の並びは、きれいだ!?


!アインシュタインの問題

PUBLIC NUMERIC C !解の個数
LET C=0

DIM F(9) !数字
MAT F=ZER

DIM A(9) !並び
CALL try(1,F,0, A)

END

EXTERNAL SUB try(P,F(),S, A()) !バックトラック法で検索する
FOR i=1 TO 9 !未使用な数字が候補である
   IF F(i)=0 THEN
      LET F(i)=1 !使用中

      LET A(P)=i !仮にこの数字とする

      LET OK=1
      SELECT CASE P
      CASE 3
         LET S=A(1)+A(2)+A(3) !1つ目の三角形の和
      CASE 6
         IF A(4)+A(5)+A(6)<>S THEN LET OK=0 !NGとする
      CASE 7
         IF A(1)+A(4)+A(7)<>S THEN LET OK=0
         IF A(3)+A(5)+A(7)<>S THEN LET OK=0
      CASE 8
         IF A(2)+A(5)+A(8)<>S THEN LET OK=0
      CASE 9
         IF A(7)+A(8)+A(9)<>S THEN LET OK=0
         IF A(3)+A(6)+A(9)<>S THEN LET OK=0
         !!IF A(1)+A(5)+A(9)<>S THEN LET OK=0 !3x3の魔方陣
      CASE ELSE
      END SELECT
      IF OK=1 THEN !条件を満たすなら

         IF P=9 THEN !すべて並んだなら
            LET C=C+1
            PRINT "No.";C
            MAT PRINT A;
         ELSE
            CALL try(P+1,F,S, A) !次へ
         END IF

      END IF

      LET F(i)=0 !元に戻す
   END IF
NEXT i
END SUB


実行結果

No. 1
1  6  8  9  2  4  5  7  3

No. 2
1  8  6  9  4  2  5  3  7

No. 3
1  9  5  6  2  7  8  4  3

No. 4
1  9  5  8  4  3  6  2  7

No. 5
2  7  6  9  5  1  4  3  8

No. 6
2  9  4  7  5  3  6  1  8

No. 7
3  4  8  7  2  6  5  9  1

No. 8
3  7  5  4  2  9  8  6  1

No. 9
3  7  5  8  6  1  4  2  9

No. 10
3  8  4  7  6  2  5  1  9

No. 11
4  3  8  9  5  1  2  7  6

No. 12
4  9  2  3  5  7  8  1  6

No. 13
6  1  8  7  5  3  2  9  4

No. 14
6  7  2  1  5  9  8  3  4

No. 15
7  2  6  3  4  8  5  9  1

No. 16
7  3  5  2  4  9  6  8  1

No. 17
7  3  5  6  8  1  2  4  9

No. 18
7  6  2  3  8  4  5  1  9

No. 19
8  1  6  3  5  7  4  9  2

No. 20
8  3  4  1  5  9  6  7  2

No. 21
9  1  5  2  6  7  4  8  3

No. 22
9  1  5  4  8  3  2  6  7

No. 23
9  2  4  1  6  8  5  7  3

No. 24
9  4  2  1  8  6  5  3  7


 

Re: アインシュタインの問題

 投稿者:山中和義  投稿日:2013年 9月27日(金)07時12分11秒
  > No.3150[元記事へ]

たとえば、
   9────4
  /\   /\
 1──5─8──3
  \  \/  /    915
   \  2  /     483
    \/\/      267
    6─7
と、解の1つが見つかっているとき、これを元に他の解を生成します。


向い合う小さい三角形と大きい三角形の数字を入れ替える。(3箇所ある)
   ────6
  /\   /\
 ───8──       /
  \  \/  /    735
   \  2  /     681
    \/\/      249
    4─      /


数字の5を含まない2つの三角形を入れ替える。
   9────
  /\   /\
 1──5───
  \  \/  /    915
   \    /     267 ┐
    \/\/      483 ┘
    

同様に、向い合う小さい三角形と大きい三角形の数字を入れ替える。
   3────8
  /\   /\
 7──5─6──1       /
  \  \/  /    375
   \  4  /     861
    \/\/      429
    2─9      /

以上、計4パターン


それぞれは、盤の鏡面と回転で6パターンが生成される。
以上、計24パターン


 

戻る