*** 2000-09-05 高橋謙一郎さんのHP(掲示板)に投稿 *** 0解から最長手数解を求める方法です。 ライツアウトの解の存在条件式のパターンと0解のパターンが一致することが 前提知識となります。(私のHPを参照してください) 5x5のライツアウトの0解は、以下の3パターンである。  (p1) -BCD-F-H-JKL-NOP-R-T-VWX- (p2) A-C-EF-H-J-----P-R-TU-W-Y (p3) AB-DE-----KL-NO-----UV-XY p1,p2,p3は互いに独立ではなく、他の2つのXORにより求めることができる。 push位置のA〜Yを以下のように分類する。  (1)p1,p2,p3のいずれにもでてこないもの :G,I,M,Q,Sの5個  (2)p1,p2に共通にでてくるもの      :C,F,H,J,P,R,T,Wの8個   (3)p2,p3に共通にでてくるもの      :A,E,U,Yの4個  (4)p3,p1に共通にでてくるもの      :B,D,K,L,N,O,V,Xの8個 最長手数の解を考えると、 (1)は無条件に1にすればよい(∵解の存在には関係ない) (2)は、丁度半分を1にすることができる。半分を超えているものは0解    とのXORにより半分未満の解が存在することになるので、丁度半分    が最大となる。 (3),(4)も同様である。 なお、(2),(3),(4)を丁度半分づつ1にしたものは、解の存在条件をみたして いることは明らかである。 よって、最長手数は、5+8/2+4/2+8/2=15となる。 次に、最長手数解の個数について考える。 (2)の候補の選び方は、8個から4個選ぶ組み合わせ=8!/4!=70 (3),(4)もそれぞれ、4!/2!,8!/4!となる。 全体としては 6x70x70=29400パターン これは、pushパターンの数であるから、問題面の数としては、この1/4 になる。    29400/4=7350通り これは、広井さんの探索結果と一致する。 参考までに、最長手数解を示す。    (pushパターン)   (問題面)      11111       10001      11111       01101      11100       11111      01010       00111      00000       01010