Exemplo n.º 1
0
        public static IEnumerable <Int64> Generate(List <Int32> foo, int value, int max = 5000)
        {
            var arr = new Int64[value];

            if (foo.Count() == 7)
            {
                CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(arr, max, value, foo[0], foo[1], foo[2], foo[3], foo[4], foo[5], foo[6]);
            }
            if (foo.Count() == 6)
            {
                CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(arr, max, value, foo[0], foo[1], foo[2], foo[3], foo[4], foo[5]);
            }
            if (foo.Count() == 5)
            {
                CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(arr, max, value, foo[0], foo[1], foo[2], foo[3], foo[4]);
            }
            if (foo.Count() == 4)
            {
                CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(arr, max, value, foo[0], foo[1], foo[2], foo[3]);
            }
            if (foo.Count() == 3)
            {
                CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(arr, max, value, foo[0], foo[1], foo[2]);
            }
            if (foo.Count() == 2)
            {
                CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(arr, max, value, foo[0], foo[1]);
            }
            if (foo.Count() == 1)
            {
                CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(arr, max, value, foo[0]);
            }

            return(arr);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Recalculates when any of the underlying units is 'triggered'
        /// i.e., is a multiple of the value.
        /// </summary>
        /// <param name="source">source value to calc</param>
        /// <param name="newNumberOfCoins">tally for holding combo results</param>
        /// <returns>number of combinations found for this result</returns>
        /// <exception cref="Exception"></exception>
        public override Int64 Calculate(int source, int maximumCoins, Int64[] newNumberOfCoins)
        {
            Int64 cnt = 0;

            // do calc if any multiples are triggered
            if (units.Any(x => source % x == 0))
            {
                if (units.Count == 7)
                {
                    cnt = CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(newNumberOfCoins, maximumCoins,
                                                                                              source, units[0], units[1], units[2],
                                                                                              units[3], units[4], units[5], units[6]);
                }
                else if (units.Count == 6)
                {
                    cnt = CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(newNumberOfCoins, maximumCoins,
                                                                                              source, units[0], units[1], units[2],
                                                                                              units[3], units[4], units[5]);
                }
                else if (units.Count == 5)
                {
                    cnt = CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(newNumberOfCoins, maximumCoins,
                                                                                              source, units[0], units[1], units[2],
                                                                                              units[3], units[4]);
                }
                else if (units.Count == 4)
                {
                    cnt = CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(newNumberOfCoins, maximumCoins,
                                                                                              source, units[0], units[1], units[2],
                                                                                              units[3]);
                }
                else if (units.Count == 3)
                {
                    cnt = CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(newNumberOfCoins, maximumCoins,
                                                                                              source, units[0], units[1], units[2]);
                }
                else if (units.Count == 2)
                {
                    cnt = CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(newNumberOfCoins, maximumCoins,
                                                                                              source, units[0], units[1]);
                }
                else if (units.Count == 1)
                {
                    cnt = CoinsForUnevenFactors.CalculateTotalCoinsForEachComboAndReturnCount(newNumberOfCoins, maximumCoins,
                                                                                              source, units[0]);
                }
                else
                {
                    throw new Exception($"Unexpected number of values initialized - {units.Count} > 7");
                }
            }
            return(cnt);
        }