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); }
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)); }
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); }
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)); }