Only loop through directions when a peg is present.

This commit is contained in:
Josh Holtrop 2021-02-28 15:12:40 -05:00
parent 7dc37d4ede
commit 7db1769723

View File

@ -53,19 +53,22 @@ class Solver
{ {
for (int col = 0; col <= row; col++) for (int col = 0; col <= row; col++)
{ {
for (Board.Direction direction = Board.Direction.FIRST; if (board.peg_present(row, col))
direction < Board.Direction.COUNT;
direction++)
{ {
Board.Position position = Board.Position(row, col); Board.Position position = Board.Position(row, col);
Board new_board = board.move(position, direction); for (Board.Direction direction = Board.Direction.FIRST;
if (new_board !is null) direction < Board.Direction.COUNT;
direction++)
{ {
found_valid_move = true; Board new_board = board.move(position, direction);
Move m = new Move(position, position.move(direction, 2)); if (new_board !is null)
Move[] new_moves = moves.dup; {
new_moves ~= m; found_valid_move = true;
eval_board(new_board, new_moves); Move m = new Move(position, position.move(direction, 2));
Move[] new_moves = moves.dup;
new_moves ~= m;
eval_board(new_board, new_moves);
}
} }
} }
} }