GR.Gambling.Backgammon.Board.ForcedMoves C# (CSharp) Method

ForcedMoves() public static method

A move is a forced move if it must be made before other moves and every move hint share the same forced move.
public static ForcedMoves ( List legal_move_sequences ) : List
legal_move_sequences List
return List
        public static List<Move> ForcedMoves(List<Play> legal_move_sequences)
        {
            List<Move> forced_moves = new List<Move>();

            if (legal_move_sequences.Count == 0)
                return forced_moves;

            int i = 0;
            bool go = true;
            // Since LegalMoves() computes in terms of simple moves, every legal_move_sequence should have the same number of simple moves.
            for (i = 0; i < legal_move_sequences[0].Count && go; i++)
            {
                int from = legal_move_sequences[0][i].From;
                int to = legal_move_sequences[0][i].To;

                foreach (Play move_sequence in legal_move_sequences)
                {
                    if (move_sequence[i].From != from ||
                        move_sequence[i].To != to)
                    {
                        go = false;
                        break;
                    }
                }

                if (go)
                    forced_moves.Add(legal_move_sequences[0][i]);
            }

            return forced_moves;
        }