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