private static void PostSolution(int problemId, SolutionSpec solution)
 {
     try
     {
         var res = ProblemsSender.Post(solution, problemId);
         if (res == 1.0)
         {
             var repo           = new ProblemsRepo();
             var problemSpec    = repo.Get(problemId);
             var problemSpecStr = problemSpec.ToString();
             var toSend         = repo.GetAllNotSolvedPerfectly().Where(p => p.ToString() == problemSpecStr).ToList();
             foreach (var sameProb in toSend)
             {
                 res = Math.Min(res, ProblemsSender.Post(solution, sameProb.id));
             }
             MessageBox.Show($"Resemblance = 1.0. {toSend.Count} same problem. min resemblence = {res}");
         }
         else
         {
             MessageBox.Show("Resemblance = " + res + " no same problems");
         }
     }
     catch (Exception e)
     {
         MessageBox.Show(e.ToString(), e.Message);
     }
 }
Esempio n. 2
0
        public static void SolveAllNotSolvedPerfectly()
        {
            var snapshotJson          = problemsRepo.GetSnapshot(new ApiClient());
            var problemToRank         = snapshotJson.Problems.ToDictionary(p => p.Id, p => p.ExpectedScore());
            var allNotSolvedPerfectly = problemsRepo.GetAllNotSolvedPerfectly().OrderByDescending(x => problemToRank[x.id]);

            SolveAll(allNotSolvedPerfectly.ToList());
        }
Esempio n. 3
0
        public void CalcImperfectScore2()
        {
            var repo = new ProblemsRepo();
            var c    = repo.GetAllNotSolvedPerfectly().Count();

            Console.WriteLine(c);
            Console.WriteLine(repo.GetAll().Count());
        }
Esempio n. 4
0
        public void FindRects()
        {
            var repo = new ProblemsRepo();
            var sq   = repo.GetAllNotSolvedPerfectly().Where(p => p.Segments.Length == 4);

            foreach (var p in sq)
            {
                Console.WriteLine(p.id);
            }
        }
Esempio n. 5
0
        public void SolveRibbons()
        {
            var repo         = new ProblemsRepo();
            var snapshotJson = repo.GetSnapshot(new ApiClient());
            var ribbons      = repo.GetAllNotSolvedPerfectly().Where(IsRibbon);
            var sum          = 0d;

            foreach (var ribbon in ribbons)
            {
                var desc = snapshotJson.Problems.First(p => p.Id == ribbon.id);
                sum += desc.ExpectedScore();
                Console.WriteLine(ribbon.id + " Owner = " + desc.Owner + " Exp = " + desc.ExpectedScore());
            }
            Console.WriteLine(sum);
        }
Esempio n. 6
0
        public void CalculateOurScore()
        {
            var repo      = new ProblemsRepo();
            var sn        = repo.GetSnapshot(null);
            var ourScore1 = 0.0;
            var ourScore2 = 0.0;
            var ourScore3 = 0.0;

            foreach (var pr in sn.Problems)
            {
                var solutions = pr.Ranking.Count(r => r.resemblance == 1.0);
                var part      = pr.SolutionSize / (solutions + 1.0);
                var myR       = repo.GetProblemResemblance(pr.Id);
                if (myR == 1.0)
                {
                    ourScore1 += part;
                }
                else
                {
                    var rSum = pr.Ranking.Where(r => r.resemblance != 1.0).Sum(r => r.resemblance);
                    ourScore2 += part * myR / rSum;
                }
                if (pr.Owner == "89")
                {
                    ourScore3 += (5000 - pr.SolutionSize) / Math.Max(6, solutions + 1.0);
                }
            }
            Console.WriteLine(ourScore1);
            Console.WriteLine(ourScore2);
            Console.WriteLine(ourScore3);
            Console.WriteLine(ourScore1 + ourScore2 + ourScore3);
            var prCount       = repo.GetAll().Count();
            var noSolvedCount = repo.GetAllNotSolvedPerfectly().Count();

            Console.WriteLine(prCount - noSolvedCount);
            Console.WriteLine(prCount);
        }