/// <summary> /// Computes all. /// </summary> /// <typeparam name="TGameOptimizer">The type of the game optimizer.</typeparam> /// <typeparam name="TGame">The type of the game.</typeparam> /// <typeparam name="TGameOutput">The type of the game output.</typeparam> /// <typeparam name="TInput">The type of the input.</typeparam> /// <param name="optmizer">The optmizer.</param> public static void ComputeAll <TGameOptimizer, TGame, TGameOutput, TInput>(OptimizerId optmizer) where TGameOptimizer : IGameOptimizer <TGame, TGameOutput> where TGame : IGame, new() where TGameOutput : IGameOutput { TGameOptimizer optimizer = GetOptimizer <TGameOptimizer, TGame, TGameOutput>(optmizer); TInput[] inputs = EnumExtensions.GetValues <TInput>(); foreach (TInput input in inputs) { Compute <TGameOptimizer, TGame, TGameOutput, TInput>(input, optimizer); } }
/// <summary> /// Defines the entry point of the application. /// </summary> /// <param name="args">The arguments.</param> public static void Main(string[] args) { //TestBoardExtensions(); GameInputs input = GameProcessor.GetEnumFromArg(args, 0, GameInputs.Unset); OptimizerId optimizer = GameProcessor.GetEnumFromArg(args, 1, OptimizerId.Schaepi); Stopwatch totalDuration = new Stopwatch(); totalDuration.Start(); if (input == GameInputs.Unset) { GameProcessor.ComputeAll <IGameOptimizer <Game, CacheUsages>, Game, CacheUsages, GameInputs>(optimizer, EnumExtensions.GetValues <GameInputs>().ExceptElts(GameInputs.Unset).ToArray()); } else { GameProcessor.Compute <IGameOptimizer <Game, CacheUsages>, Game, CacheUsages, GameInputs>(optimizer, input); } totalDuration.DisplayTime("Finished !"); Console.ReadLine(); Console.WriteLine("Tap to quit"); Console.ReadLine(); }
/// <summary> /// Defines the entry point of the application. /// </summary> /// <param name="args">The arguments.</param> public static void Main(string[] args) { //TestBoardExtensions(); GameInputs input = GameProcessor.GetEnumFromArg(args, 0, GameInputs.Unset); OptimizerId optimizer = GameProcessor.GetEnumFromArg(args, 1, OptimizerId.Schepi); //OptimizerId optimizer = GameProcessor.GetEnumFromArg(args, 1, OptimizerId.Jon); Stopwatch totalDuration = new Stopwatch(); totalDuration.Start(); if (input == GameInputs.Unset) { GameProcessor.ComputeAll <IGameOptimizer <Game, PizzaSlices>, Game, PizzaSlices, GameInputs>(optimizer); } else { GameProcessor.Compute <IGameOptimizer <Game, PizzaSlices>, Game, PizzaSlices, GameInputs>(input, optimizer); } totalDuration.DisplayTime("Finished !"); Console.ReadLine(); Console.WriteLine("Tap to quit"); Console.ReadLine(); }
/// <summary> /// Computes the specified input. /// </summary> /// <typeparam name="TGameOptimizer">The type of the game optimizer.</typeparam> /// <typeparam name="TGame">The type of the game.</typeparam> /// <typeparam name="TGameOutput">The type of the game output.</typeparam> /// <typeparam name="TInput">The type of the input.</typeparam> /// <param name="input">The input.</param> /// <param name="optmizer">The optmizer.</param> public static void Compute <TGameOptimizer, TGame, TGameOutput, TInput>(TInput input, OptimizerId optmizer) where TGameOptimizer : IGameOptimizer <TGame, TGameOutput> where TGame : IGame, new() where TGameOutput : IGameOutput { TGameOptimizer optimizer = GetOptimizer <TGameOptimizer, TGame, TGameOutput>(optmizer); Compute <TGameOptimizer, TGame, TGameOutput, TInput>(input, optimizer); }
/// <summary> /// Gets the optimizer. /// </summary> /// <typeparam name="TGameOptimizer">The type of the game optimizer.</typeparam> /// <typeparam name="TGame">The type of the game.</typeparam> /// <typeparam name="TGameOutput">The type of the game output.</typeparam> /// <param name="optmizerId">The optmizer identifier.</param> /// <returns></returns> public static TGameOptimizer GetOptimizer <TGameOptimizer, TGame, TGameOutput>(OptimizerId optmizerId) where TGameOptimizer : IGameOptimizer <TGame, TGameOutput> where TGame : IGame, new() where TGameOutput : IGameOutput { Type optimizerInterface = typeof(TGameOptimizer); IEnumerable <Type> types = Assembly.GetEntryAssembly().GetTypes().Where(t => t.GetInterfaces().Contains(optimizerInterface)); IEnumerable <TGameOptimizer> optimizers = types.Select(Activator.CreateInstance).OfType <TGameOptimizer>(); TGameOptimizer optimizer = optimizers.FirstOrDefault(o => o.OptimizerId == optmizerId); return(optimizer); }