General Solver

/* s.init();
   自身(this)をゲーム開始状態に初期化する。
   this のメンバを変更して下さい。
   引数   = なし。
   戻り値 = なし。*/
State.prototype.init = function(){
};

/* m0 = s.first();
   新しい状態に入ったときに、初めに探索する手を返す。
   引数   = なし。
   戻り値 = 初めの一手を表す Motion オブジェクト。
            ゲーム終了なら null を返すこと。*/
State.prototype.first = function(){
};

/* m1 = s.next(m0);
   次に試す手を返す関数。
   引数 m0 = 現在の手を表す Motion オブジェクト。
   戻り値  = 有効な次の手を表す Motion オブジェクト。
          or 有効な次の手がない場合は null。*/
State.prototype.next = function(m0){
};

/* s1 = s0.deep(m);
   this の状態の時に m の手を打ったときの次の状態を求める関数。
   引数 m = 打つ手を表す Motion オブジェクト。
   戻り値 = this から m を打ったあとの状態を表す State オブジェクト。*/
State.prototype.deep = function(m){
};

/* str = s.toString();
   現状態の文字列表現を返す。
   引数   = なし。
   戻り値 = 状態 this の文字列表現。HTML を返してください。*/
State.prototype.toString = function(){
};

/* str = m.toString();
   手を示す文字列表現を返す。
   引数 m = 対象となる次の手。
   戻り値 = 文字列表現。HTML を返してください。*/
Motion.prototype.toString = function(){
};


表示列数 =
反復深化 = now (from to )