Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        /// <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();
        }
Exemplo n.º 3
0
        /// <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();
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }