Closed yurkovas closed 3 years ago
I'm removed (commented) the possibly unnecessary code in Position.compute_winning_position:
//horizontal position_t p = (position << (HEIGHT + 1)) & (position << 2 (HEIGHT + 1)); r |= p & (position << 3 (HEIGHT + 1)); // r |= p & (position >> (HEIGHT + 1)); p = (position >> (HEIGHT + 1)) & (position >> 2 (HEIGHT + 1)); // r |= p & (position << (HEIGHT + 1)); r |= p & (position >> 3 (HEIGHT + 1));
//diagonal 1 p = (position << HEIGHT) & (position << 2 HEIGHT); r |= p & (position << 3 HEIGHT); // r |= p & (position >> HEIGHT); p = (position >> HEIGHT) & (position >> 2 HEIGHT); // r |= p & (position << HEIGHT); r |= p & (position >> 3 HEIGHT);
//diagonal 2 p = (position << (HEIGHT + 2)) & (position << 2 (HEIGHT + 2)); r |= p & (position << 3 (HEIGHT + 2)); // r |= p & (position >> (HEIGHT + 2)); p = (position >> (HEIGHT + 2)) & (position >> 2 (HEIGHT + 2)); // r |= p & (position << (HEIGHT + 2)); r |= p & (position >> 3 (HEIGHT + 2));
I was wrong. compute_winning_position works correctly.
I'm removed (commented) the possibly unnecessary code in Position.compute_winning_position:
//horizontal position_t p = (position << (HEIGHT + 1)) & (position << 2 (HEIGHT + 1)); r |= p & (position << 3 (HEIGHT + 1)); // r |= p & (position >> (HEIGHT + 1)); p = (position >> (HEIGHT + 1)) & (position >> 2 (HEIGHT + 1)); // r |= p & (position << (HEIGHT + 1)); r |= p & (position >> 3 (HEIGHT + 1));
//diagonal 1 p = (position << HEIGHT) & (position << 2 HEIGHT); r |= p & (position << 3 HEIGHT); // r |= p & (position >> HEIGHT); p = (position >> HEIGHT) & (position >> 2 HEIGHT); // r |= p & (position << HEIGHT); r |= p & (position >> 3 HEIGHT);
//diagonal 2 p = (position << (HEIGHT + 2)) & (position << 2 (HEIGHT + 2)); r |= p & (position << 3 (HEIGHT + 2)); // r |= p & (position >> (HEIGHT + 2)); p = (position >> (HEIGHT + 2)) & (position >> 2 (HEIGHT + 2)); // r |= p & (position << (HEIGHT + 2)); r |= p & (position >> 3 (HEIGHT + 2));