private async Task <List <EngineResult> > GetResults(string text)
        {
            _logger.LogDebug($"Processing {text}");

            var results  = new ConcurrentBag <EngineResult>();
            var promises = _engines.Select(async engine =>
            {
                var engineResult = new EngineResult()
                {
                    EngineName = engine.Name,
                    Text       = text,
                    Count      = await engine.GetResultsCount(text)
                };
                results.Add(engineResult);
            }
                                           );

            try
            {
                await Task.WhenAll(promises);
            }
            catch (AggregateException)
            {
                _logger.LogError("Not all engines success.");
                throw;
            }

            return(results.OrderBy(r => r.Count).ToList());
        }
Exemplo n.º 2
0
        public void EnsureMaximizingPlayerWinsAfterOpponentBadMove()
        {
            var game = TicTacToeGame.Classic;

            game.DoMove(new TicTacToeMove()
            {
                X = 1,
                Y = 1,
            });

            // bad for Minimizing player move
            game.DoMove(new TicTacToeMove()
            {
                X = 0,
                Y = 1,
            });

            int step = 1;

            // play as AI wants till the end
            while (!game.State.IsTerminate)
            {
                EngineResult aiResult = _ai.Analyse(game);

                game.DoMove(aiResult.BestMove);

                // Maximizing wins estimation all the way till the end
                Assert.IsTrue(aiResult.Estimate.IsCloseTo(Estimate.MaxInf), $"step {step} -- win MAX estimation expected");

                step += 1;
            }

            Assert.IsTrue(game.State.IsTerminate);
            Assert.IsTrue(game.State.StaticEstimate.IsCloseTo(Estimate.MaxInf));
        }
Exemplo n.º 3
0
        public void CheckFirstMove()
        {
            var game = TicTacToeGame.Classic;

            EngineResult  aiResult = _ai.Analyse(game);
            TicTacToeMove bestMove = aiResult.BestMove as TicTacToeMove;

            Assert.IsNotNull(aiResult);
            Assert.IsNotNull(bestMove);

            // check it's one of good first moves -- 4 corners or center
            var goodMoves = new[]
            {
                Tuple.Create(0, 0),
                Tuple.Create(2, 0),
                Tuple.Create(0, 2),
                Tuple.Create(2, 2),
                Tuple.Create(0, 0),
            };

            bool goodMove = false;

            foreach (var p in goodMoves)
            {
                if (bestMove.X == p.Item1 && bestMove.Y == p.Item2)
                {
                    goodMove = true;
                    break;
                }
            }

            Assert.IsTrue(goodMove, $"first move is bad: {bestMove}");
        }
Exemplo n.º 4
0
        public void TestCase2()
        {
            // -------
            // |o|x|x|
            // -------
            // |x|o|*|
            // -------
            // |o| |x|
            // -------
            // * -- expected next move

            var game = TicTacToeGame.Classic;

            game.State.SetCell(0, 0, Player.Minimizing);
            game.State.SetCell(1, 0, Player.Maximizing);
            game.State.SetCell(2, 0, Player.Maximizing);
            game.State.SetCell(0, 1, Player.Maximizing);
            game.State.SetCell(1, 1, Player.Minimizing);
            game.State.SetCell(2, 1, null);
            game.State.SetCell(0, 2, Player.Minimizing);
            game.State.SetCell(1, 2, null);
            game.State.SetCell(2, 2, Player.Maximizing);

            game.State.NextMovePlayer = Player.Minimizing;

            EngineResult aiResult = _ai.Analyse(game);

            Assert.AreEqual(Estimate.Zero, aiResult.Estimate, "it should be draw game estimate");

            var bestMove = aiResult.BestMove as TicTacToeMove;

            Assert.AreEqual(2, bestMove.X, "x");
            Assert.AreEqual(1, bestMove.Y, "y");
        }
Exemplo n.º 5
0
        public override EngineResult Analyse(Game game)
        {
            var result = new EngineResult();

            Metadata metadata = new Metadata();
            Estimate estimate = default(Estimate);

            TimeSpan elapsed = Time.It(() =>
            {
                estimate = FindImpl(
                    game: game,
                    alpha: Estimate.MinInf,
                    beta: Estimate.MaxInf,
                    depth: 1,
                    maxDepth: MaxDepth,
                    meta: metadata);
            });

            Debug.Assert(metadata.BestMove != null);

            result.BestMove = metadata.BestMove;
            result.Estimate = estimate;

            result.Metadata.MovesChecked = metadata.MovesChecked;
            result.Metadata.ElapsedSec   = elapsed.TotalSeconds;
            result.Metadata.Rate         = metadata.MovesChecked / elapsed.TotalSeconds;

            return(result);
        }
Exemplo n.º 6
0
        public List <EngineResult> Process(string contents, string filename)
        {
            var result = new EngineResult {
                FileName = filename
            };
            var properties = new Dictionary <string, object>();

            properties["css"] = contents;

            const string script = @"
var exports = require('http://csslint.net/js/csslint.js', null, 'exports.CSSLint = CSSLint;');
var CSSLint = exports.CSSLint;

var css = external.Get('css');

var result = CSSLint.verify(css);

for(var i = 0; i < result.messages.length; i++)
{
	var message = result.messages[i];
	var messageText = message.message + ': ' + message.evidence;

	external.LogMessage(messageText, message.line, message.col);
}
";

            var javascriptResult = JavascriptRunner.Execute(script, properties);

            result.Exceptions.AddRange(javascriptResult.Messages);

            return(new List <EngineResult> {
                result
            });
        }
Exemplo n.º 7
0
        List <EngineResult> IEngine.Process(string contents, string filename)
        {
            var result = new EngineResult {
                FileName = filename, Extension = "min.js"
            };
            var properties = new Dictionary <string, object>();

            properties["js"] = contents;

            const string script = @"
var uglify = require('https://raw.github.com/mishoo/UglifyJS/master/uglify-js.js');
var js = external.Get('js');
var result = uglify(js);
external.Set('result', result);
";

            try
            {
                var javascriptResult = JavascriptRunner.Execute(script, properties);
                result.Contents = javascriptResult.Get("result") as string;
                result.Exceptions.AddRange(javascriptResult.Messages);
            }
            catch (ChirpyException cex)
            {
                result.Exceptions.Add(cex);
            }

            return(new List <EngineResult> {
                result
            });
        }
Exemplo n.º 8
0
        public IEngineResult Execute(BadModel model)
        {
            EngineResult result = new EngineResult()
            {
                Name = GetType().ToString()
            };

            return(result);
        }
Exemplo n.º 9
0
 public TxResult(StObject tx, StObject meta, Uint32 ledgerIndex)
 {
     Tx          = tx;
     Meta        = meta;
     LedgerIndex = ledgerIndex;
     Hash        = tx[Field.hash];
     Result      = meta[Field.TransactionResult];
     TxIndex     = meta[Field.TransactionIndex];
     Type        = tx[Field.TransactionType];
 }
Exemplo n.º 10
0
        public IEngineResult Execute(ExampleModel model)
        {
            EngineResult result = new EngineResult()
            {
                Name = GetType().ToString()
            };

            model.DivisionResult = (float)model.Value1 / model.Value2;
            return(result);
        }
Exemplo n.º 11
0
        public IEngineResult Execute(ExampleModel model)
        {
            EngineResult result = new EngineResult()
            {
                Name = GetType().ToString()
            };

            model.MultiplicaionResult = model.Value1 * model.Value2;
            return(result);
        }
Exemplo n.º 12
0
        public IEngineResult Execute(ExampleModel model)
        {
            EngineResult result = new EngineResult()
            {
                Name = GetType().ToString()
            };

            model.SubtractResult = model.Value1 - model.Value2;
            return(result);
        }
Exemplo n.º 13
0
        public IEngineResult Execute(TestModel model)
        {
            EngineResult result = new EngineResult()
            {
                Name = GetType().ToString()
            };

            model.Result = model.A + model.B;
            return(result);
        }
Exemplo n.º 14
0
 public void ConstructorTest()
 {
     EngineResult result = new EngineResult() { Error = "error", Message = "Message", TimeEnd = DateTime.UtcNow, TimeStart = DateTime.UtcNow};
     Assert.IsNotNull(result);
     Assert.IsNotNull(result.Error);
     Assert.IsNotNull(result.Message);
     Assert.IsNotNull(result.TimeEnd);
     Assert.IsNotNull(result.TimeStart);
     Assert.IsTrue(result.HasError);
 }
Exemplo n.º 15
0
        public IEngineResult Execute(ExampleModel model)
        {
            EngineResult result = new EngineResult()
            {
                TimeStart = DateTime.UtcNow, Name = GetType().ToString()
            };

            model.DivisionResult = (float)model.Value1 / model.Value2;
            result.TimeEnd       = DateTime.UtcNow;
            return(result);
        }
Exemplo n.º 16
0
        public IEngineResult Execute(ExampleModel model)
        {
            EngineResult result = new EngineResult()
            {
                TimeStart = DateTime.UtcNow, Name = GetType().ToString()
            };

            model.SubtractResult = model.Value1 - model.Value2;
            result.TimeEnd       = DateTime.UtcNow;
            return(result);
        }
Exemplo n.º 17
0
 public TxSubmission(Hash256 hash,
                     EngineResult engineResult,
                     JObject txJson,
                     JObject resultJson)
 {
     Hash                = hash;
     EngineResult        = engineResult;
     TxJson              = txJson;
     ResultJson          = resultJson;
     ExpectedFinalResult = null;
 }
Exemplo n.º 18
0
        public static EngineResult Evaluate(WhileStatement loop, Scope scope)
        {
            EngineResult result = null;

            while (Evaluate(loop.Predicate, NullArgument.It, scope))
            {
                result = Evaluate(loop.Statement, scope);
            }

            return(result);
        }
Exemplo n.º 19
0
        public void ConstructorTest()
        {
            EngineResult result = new EngineResult()
            {
                Error = "error", Message = "Message", TimeEnd = DateTime.UtcNow, TimeStart = DateTime.UtcNow
            };

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Error);
            Assert.IsNotNull(result.Message);
            Assert.IsNotNull(result.TimeEnd);
            Assert.IsNotNull(result.TimeStart);
            Assert.IsTrue(result.HasError);
        }
Exemplo n.º 20
0
        public void ConstructorTest()
        {
            IEngineResult result = new EngineResult()
            {
                Error = "error", Message = "Message"
            }.End();

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Error);
            Assert.IsNotNull(result.Message);
            Assert.IsNotNull(result.TimeEnd);
            Assert.IsNotNull(result.TimeStart);
            Assert.IsNotNull(result.Elapsed);
            Assert.IsTrue(result.HasError);
        }
Exemplo n.º 21
0
        public IList<EngineResult> GetEngineResults(string keyword, int pageIndex = 0, int sleepSeconds = 0)
        {
            var html = GetHtml(keyword, pageIndex, sleepSeconds);

            if (!html.Contains("id=\"ires\""))
                throw new InvalidDataException("не найден контент с результатами");

            html = html.Substring(html.IndexOf("id=\"ires\""));

            var result = new List<EngineResult>();
            int position = 0;
            int startIndex;
            while ((startIndex = html.Substring(position).IndexOf("<li class=\"g\">")) >= 0)
            {
                const string endTag = "</li>";
                var endIndex = html.Substring(position + startIndex).IndexOf(endTag);
                if (endIndex == -1)
                    break;
                endIndex += endTag.Length;

                var engineResult = new EngineResult
                    {
                        ItemHtml = html.Substring(position + startIndex, endIndex)
                    };

                position += startIndex + endIndex;

                if (engineResult.ItemHtml.IndexOf("Картинки по запросу", StringComparison.CurrentCultureIgnoreCase) != -1 || //картинки по запросу
                    engineResult.ItemHtml.IndexOf("<cite class=\"kv\">") != -1 ||  //видео по запросу
                    engineResult.ItemHtml.IndexOf("float:right") != -1      //из гугл мапс объекты
                    )
                    continue;

                try
                {
                    engineResult.Title = GetTitle(engineResult.ItemHtml);
                    engineResult.Url = GetUrl(engineResult.ItemHtml);
                    result.Add(engineResult);
                }
                catch (Exception e)
                {
                   //todo писать в лог
                }

            }

            return result;
        }
Exemplo n.º 22
0
        public void OneMoveToWinTheGame()
        {
            var game = TicTacToeGame.Classic;

            game.State.SetCell(1, 1, Player.Maximizing);
            game.State.SetCell(2, 0, Player.Maximizing);

            game.State.NextMovePlayer = Player.Maximizing;

            EngineResult aiResult = _ai.Analyse(game);

            TicTacToeMove bestMove = aiResult.BestMove as TicTacToeMove;

            Assert.AreEqual(0, bestMove.X);
            Assert.AreEqual(2, bestMove.Y);
        }
        private PreviewResult ToPreviewResult(EngineResult engineResult)
        {
            PreviewResult previewResult = new PreviewResult();

            previewResult.PreviewStatus = PreviewStatus.Success;
            previewResult.EngineStatus  = engineResult.EngineStatus;
            previewResult.Output        = engineResult.Output;

            if (engineResult.EngineStatus != EngineStatus.Success)
            {
                previewResult.PreviewStatus       = PreviewStatus.EngineSaysNo;
                previewResult.EngineCompileErrors = engineResult.CompileErrors;
                previewResult.EngineRunException  = engineResult.RunException;
            }

            return(previewResult);
        }
        private TransformResult ToTransformResult(EngineResult engineResult)
        {
            TransformResult transformResult = new TransformResult();

            transformResult.TransformStatus = TransformStatus.Success;
            transformResult.EngineStatus    = engineResult.EngineStatus;
            transformResult.Output          = engineResult.Output;

            if (engineResult.EngineStatus != EngineStatus.Success)
            {
                transformResult.TransformStatus     = TransformStatus.EngineSaysNo;
                transformResult.EngineCompileErrors = engineResult.CompileErrors;
                transformResult.EngineRunException  = engineResult.RunException;
            }

            return(transformResult);
        }
        public EngineResult Calculate(string id, EngineInfo engineInfo)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                throw new System.ArgumentNullException("id");
            }
            if (engineInfo == null)
            {
                throw new System.ArgumentNullException("engineInfo");
            }

            var result = new EngineResult
            {
                ValueA = "A",
                ValueB = "B"
            };

            return(result);
        }
Exemplo n.º 26
0
        string GetOutputFileName(EngineResult result, string filename, EngineContainer engine)
        {
            var baseFileName = filename;

            if (!string.IsNullOrEmpty(result.FileName))
            {
                baseFileName = result.FileName;
            }

            var inputExtension = ExtensionResolver.GetExtensionFromCategory(engine.Category);

            if (baseFileName.EndsWith(inputExtension))
            {
                baseFileName = filename.Substring(0, filename.Length - inputExtension.Length);
            }
            else
            {
                baseFileName = FileHandler.GetBaseFileName(baseFileName);
            }

            return(string.Format("{0}.{1}", baseFileName, result.Extension));
        }
Exemplo n.º 27
0
        protected async Task <TxSubmission> Expect(
            EngineResult ter,
            Task <TxSubmission> future,
            [CallerMemberName] string memberName    = "",
            [CallerFilePath] string sourceFilePath  = "",
            [CallerLineNumber] int sourceLineNumber = 0)
        {
            TxSubmission result;

            try
            {
                result = await future;
            }
            catch (InvalidOperationException e)
            {
                throw new UnexpectedEngineResultException(
                          $"In {memberName} @ {sourceFilePath}:{sourceLineNumber} you " +
                          $"expected {ter} submit response, got:\n" +
                          $"{Alias(e.Message)}");
            }

            if (ter != result.EngineResult)
            {
                throw new UnexpectedEngineResultException(
                          $"In {memberName} @ {sourceFilePath}:{sourceLineNumber} you " +
                          $"expected {ter} submit response, got {result.EngineResult}:\n" +
                          $"{Alias(result.ResultJson.ToString())}");
            }
            // For checking the final result
            result.ExpectedFinalResult = new ResultExpectation
            {
                EngineResult     = ter,
                MemberName       = memberName,
                SourceFilePath   = sourceFilePath,
                SourceLineNumber = sourceLineNumber
            };
            return(result);
        }
Exemplo n.º 28
0
        private async void ButtonStartGame_Click(object sender, RoutedEventArgs e)
        {
            EngineResult addPlayersResult = await AddPlayersToEnginePlayerList();

            if (!addPlayersResult.Succedeed)
            {
                MessageBox.Show(addPlayersResult.ErrorMessage);
                return;
            }

            EngineResult startGameResult = await engine.StartGame(66);

            if (!startGameResult.Succedeed)
            {
                MessageBox.Show(startGameResult.ErrorMessage);
            }
            else
            {
                Game game = new Game(engine);
                game.Show();
                this.Close();
            }
        }
Exemplo n.º 29
0
        public EngineResult Run()
        {
            foreach (LearningSettings learningSettings in eid.SettingsToRun)
            {
                resultsBySettings[learningSettings] = new List <SingleRunReport>();
                for (int i = 0; i < eid.RunsPerSettings; i++)
                {
                    runCounter++;
                    List <int> layersVal = BuildLayersVal(learningSettings);
                    BuildDataSet(layersVal);
                    INetwork network = CreateNetwork(learningSettings, layersVal);

                    NormalizeData(network, trainSet, testSet);
                    CheckIfPerformPCA(network);
                    learningStrategy = new VSetLearningStrategy(learningSettings);

                    BackpropagationManager backpropMan = new BackpropagationManager(network, trainSet, testSet);
                    var learningResult = backpropMan.Run(learningStrategy, learningSettings, this);

                    NormalizeDataBack(network, trainSet, testSet);
                    resultsBySettings[learningSettings].Add(new SingleRunReport(
                                                                network, DateTime.Now, learningResult, trainSet, testSet));
                }

                // use train error as criterion to simulate real-life ("we cannot use test set results yet - test set is the future")
                resultsBySettings[learningSettings].RemoveHighestValues(
                    r => r.LearningResult.FinalTrainError, discardCount);
            }

            EngineResult result = new EngineResult();

            result.ResultsBySettings = resultsBySettings;
            result.Eid = eid;
            result.WorstDiscardedCount = discardCount;
            return(result);
        }
Exemplo n.º 30
0
        public void EnsureDrawGameWhenAIvsAI()
        {
            var game = TicTacToeGame.Classic;

            int step = 1;

            // play as AI wants till the end
            while (!game.State.IsTerminate)
            {
                Trace.WriteLine($"Step #{step}...");

                EngineResult aiResult = _ai.Analyse(game);

                game.DoMove(aiResult.BestMove);

                // draw game estimation all the way till the end
                Assert.IsTrue(aiResult.Estimate.IsCloseTo(Estimate.Zero), $"step {step} -- draw game expected");

                step += 1;
            }

            Assert.IsTrue(game.State.IsTerminate, "it should be terminate state now");
            Assert.IsTrue(game.State.StaticEstimate.IsCloseTo(Estimate.Zero), $"draw game expected");
        }
Exemplo n.º 31
0
        public List <EngineResult> Process(string contents, string filename)
        {
            var result = new EngineResult {
                FileName = filename
            };
            var properties = new Dictionary <string, object>();

            properties["js"] = contents;

            const string script = @"
var exports = require('https://raw.github.com/jshint/jshint/master/jshint.js', null, '');
var JSHINT = exports.JSHINT;

var js = external.Get('js');
var result = JSHINT(js);
var errors = JSHINT.errors;
 
external.Set('result', result);
external.Set('errors', errors.length);
if (!result) 
{
	for (var i = 0; i < errors.length; i++) 
	{
		external.LogWarning((errors[i].reason || '') + ': ' + (errors[i].evidence || ''), errors[i].line || 0, errors[i].character || 0);
	}
}
";

            var javascriptResult = JavascriptRunner.Execute(script, properties);

            result.Exceptions.AddRange(javascriptResult.Messages);

            return(new List <EngineResult> {
                result
            });
        }
Exemplo n.º 32
0
        public static ResumeWord getSearchEngineWinner(AvailableEngines engine, List <SearchResult> data)
        {
            List <ResumeWord> resume = new List <ResumeWord>();

            foreach (SearchResult item in data)
            {
                EngineResult target = item.res.Find(x => x.engine.ToString() == engine.ToString());
                resume.Add(new ResumeWord {
                    word = item.word,
                    res  = target.result
                });
            }
            ResumeWord currentUpper = resume[0];

            foreach (ResumeWord item in resume)
            {
                if (item.res > currentUpper.res)
                {
                    currentUpper.word = item.word;
                    currentUpper.res  = item.res;
                }
            }
            return(currentUpper);
        }