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); } }
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()); }
public void CalcImperfectScore2() { var repo = new ProblemsRepo(); var c = repo.GetAllNotSolvedPerfectly().Count(); Console.WriteLine(c); Console.WriteLine(repo.GetAll().Count()); }
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); } }
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); }
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); }