public void Run(int[] numbers, int target, int expectedBestResult, string expectedExpression)
        {
            DynamicSolver       dynamicSolver = new DynamicSolver();
            Tuple <int, string> bestSolution  = dynamicSolver.Run(numbers, target);
            var bestResult = bestSolution.Item1;
            var expressionForBestResult = bestSolution.Item2;

            Assert.Equal(bestResult, expectedBestResult);
            Assert.Equal(expressionForBestResult, expectedExpression);
        }
        static void Main(string[] args)
        {
            DynamicSolver dynamic                 = new DynamicSolver();
            var           bestSolution            = dynamic.Run(new int[] { 1, 2, 5, 5, 6, 7 }, 720);
            var           bestResult              = bestSolution.Item1;
            var           expressionForBestResult = bestSolution.Item2;

            Console.WriteLine($"Best result : {bestResult} = {expressionForBestResult}");
            Console.ReadLine();
        }
Exemple #3
0
        public Solution Solve(Knapsack input)
        {
            ISolver solver;

            if (input.Capacity > 350000)
            {
                solver = new RatioGreedySolver();
            }
            else
            {
                solver = new DynamicSolver();
            }
            return(solver.Solve(input));
        }
        /// <summary>
        /// Functions that instanciate a countdown solver and run it on the specified problem
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public string FunctionHandler(List <int> inputNumbers, ILambdaContext context)
        {
            if (inputNumbers.Count < 2)
            {
                return("Error : numbers and a target must be provided.");
            }

            int[] numbersForArithmeticOperations = inputNumbers.Take(inputNumbers.Count - 1).ToArray();
            int   target = inputNumbers.Last();

            DynamicSolver solver                  = new DynamicSolver();
            var           bestSolution            = solver.Run(numbersForArithmeticOperations, target);
            var           bestResult              = bestSolution.Item1;
            var           expressionForBestResult = bestSolution.Item2;

            return($"Best result : {bestResult} = {expressionForBestResult}");
        }