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