public int Evaluate(byte[,] board, byte[] move, byte sign)
        {
            byte oppSign = sign == 1 ? (byte)2 : (byte)1;
            int  result  = 0;

            board[move[0], move[1]] = sign;
            List <string> StringsToCheck = Utils.FindStrings(board, move, signsInRowToWin);

            board[move[0], move[1]] = oppSign;
            StringsToCheck.AddRange(Utils.FindStrings(board, move, signsInRowToWin));
            board[move[0], move[1]] = 0;
            PatternCollection patterns = sign == 1 ? ownPatterns : opponentPatterns;

            foreach (string item in StringsToCheck)
            {
                foreach (Pattern pattern in patterns.PatternList)
                {
                    if (item.Contains(pattern.PatternString))
                    {
                        result += pattern.Weight;
                    }
                }
            }
            return(result);
        }
 public MiniMax(byte signsInRowToWin)
 {
     this.signsInRowToWin = signsInRowToWin;
     ownPatterns          = new PatternCollection(signsInRowToWin, 1);
     opponentPatterns     = new PatternCollection(signsInRowToWin, 2);
 }