Пример #1
0
        private bool IsAWinningSymbolsRow(SymbolsRow symbolsRow)
        {
            if (symbolsRow == null || symbolsRow.Symbols == null || symbolsRow.Symbols.Count == 0)
            {
                return(false);
            }

            bool isThereNonWildcardSymbol = symbolsRow.Symbols.Any(s => s != Symbol.W);

            if (!isThereNonWildcardSymbol) /*From the example seems the requirement is wildcard does not bring coefficient on its own*/
            {
                return(false);
            }

            Symbol nonWildcardSymbol = symbolsRow.Symbols.First(s => s != Symbol.W);

            for (int index = 0; index < symbolsRow.Symbols.Count; index++)
            {
                Symbol currentSymbol = symbolsRow.Symbols[index];
                if (currentSymbol != nonWildcardSymbol && currentSymbol != Symbol.W)
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #2
0
        public Result <SymbolsSet> GenerateSymbols(int rowsNumber, int columnsNumber)
        {
            Result <SymbolsSet> result = new Result <SymbolsSet>();

            SymbolsSet symbolsSet      = new SymbolsSet();
            Random     randomGenerator = new Random();

            for (int row = 1; row <= rowsNumber; row++)
            {
                SymbolsRow symbolsRow = new SymbolsRow();

                for (int column = 1; column <= columnsNumber; column++)
                {
                    try
                    {
                        Symbol symbolRolled = this.GenerateSymbol(randomGenerator);

                        symbolsRow.Symbols.Add(symbolRolled);
                    }
                    catch (Exception ex)
                    {
                        result.SetError(ex.Message);
                    }
                }

                symbolsSet.Rows.Add(symbolsRow);
            }

            return(result.SetData(symbolsSet));
        }
Пример #3
0
        private decimal GetTotalRowCoefficient(SymbolsRow symbolsRow)
        {
            Dictionary <Symbol, decimal> coefficients = this.symbolsCoefficientsProvider.GetCoefficients();
            decimal totalRowCoefficient = 0;

            foreach (Symbol symbol in symbolsRow.Symbols)
            {
                totalRowCoefficient += coefficients[symbol];
            }

            return(totalRowCoefficient);
        }
Пример #4
0
        private Result <decimal> CalculateRowCoefficient(SymbolsRow symbolsRow)
        {
            Result <decimal> result = new Result <decimal>();

            bool isWinningRow = this.IsAWinningSymbolsRow(symbolsRow);

            if (!isWinningRow)
            {
                return(result.SetData(0));
            }

            decimal totalRowCoefficient = this.GetTotalRowCoefficient(symbolsRow);

            return(result.SetData(totalRowCoefficient));
        }