public IEnumerable <Solution> Solve(IEnumerable <int> numbers, int target, IRpnMap rpnMap)
        {
            this.target = target;

            for (int i = 2; i <= numbers.Count(); i++)
            {
                var combinations = new Combinations <int>(numbers, i);
                stNumbers = new int[i];

                foreach (var combination in combinations)
                {
                    var variations = new Permutations <int>(combination);

                    foreach (var variation in variations)
                    {
                        this.variation = variation.ToArray();
                        foreach (var pattern in rpnMap[i])
                        {
                            this.pattern = pattern;
                            foreach (var branch in SolveBranch(0, 0, 0, 0, new int[i - 1], 0))
                            {
                                yield return(branch);
                            }
                        }
                    }
                }
            }
        }
예제 #2
0
        public IEnumerable <Solution> Solve(IEnumerable <int> numbers, int target)
        {
            if (numbers.Count() != rpnMap.Size + 1)
            {
                rpnMap = new RpnMap(numbers.Count());
            }

            return(solverEngine.Solve(numbers, target, rpnMap));
        }