Beispiel #1
0
        private static void ProcessData()
        {
            Console.WriteLine("Загрузка результатов вопросов...");
            var files =
                Directory.GetFiles(
                    Directory.GetCurrentDirectory(),
                    "TR_*.json", SearchOption.TopDirectoryOnly);
            var testResults = files
                              .Select(BaseHelper.LoadJson <TestResult>)
                              .ToList();

            var combinedResult = new TestResult();

            foreach (var text in testResults.SelectMany(tr => tr.Result.Questions).Select(q => q.Text))
            {
                var questions = testResults
                                .SelectMany(tr => tr.Result.Questions)
                                .Where(q => q.Text == text && q.AnswerTime.HasValue)
                                .ToArray();

                var timings = questions
                              .Select(q => q.AnswerTime.Value.TotalMilliseconds)
                              .ToArray();

                var average = timings.Average();
                var sumOfSquaresOfDifferences = timings
                                                .Select(val => (val - average) * (val - average))
                                                .Sum();
                var sd = Math
                         .Sqrt(sumOfSquaresOfDifferences / timings.Length);
                combinedResult.AddQuestion(new Question(questions.First(), TimeSpan.FromMilliseconds(average), sd));
            }

            combinedResult.SaveJson($"PR_{DateTime.Now:yyyy-dd-M--HH-mm-ss}.json");
            var graph = WeightedGraph.FromTestResult(combinedResult);

            File.WriteAllText($"PR_{DateTime.Now:yyyy-dd-M--HH-mm-ss}.dot", graph.ToDot());
        }