/// <summary> /// 下位bitから1bit拾ってそのbit位置を返す。 /// 少なくとも1bitは非0と仮定 /// while(to = bb.Pop()) /// Util.MakeMove(from,to); /// のように用いる。 /// </summary> /// <returns></returns> public Square Pop() { Debug.Assert(!IsZero()); return((p.p0 != 0) ? (Square)(BitOp.LSB64(ref p.p0)) : (Square)(BitOp.LSB64(ref p.p1) + 63)); }
/// <summary> /// 下位bitから1bit拾ってそのbit位置を返す。 /// 少なくとも1bitは非0と仮定 /// while(to = bb.Pop()) /// Util.MakeMove(from,to); /// のように用いる。 /// </summary> /// <returns></returns> public Square Pop() { return((p.p0 != 0) ? (Square)(BitOp.LSB64(ref p.p0)) : (Square)(BitOp.LSB64(ref p.p1) + 63)); }