public void Analyse(DirectoryInfo dir) { var sw = Stopwatch.StartNew(); try { Nodes = SearchTreeKnownNodes.Load(dir); Console.WriteLine("Loaded {0} positions.", Nodes.Count); } catch (Exception x) { Console.WriteLine(x.Message); } var files = dir.GetFiles("*.log").OrderByDescending(f => f.Name).ToList(); var saved = 0; var skipped = 0; double total = files.Count; foreach (var file in files) { Console.Write("\r"); Console.Write(@"{4:hh\:mm\:ss} Saved: {0}, skipped: {1}, {2} out {3} ({5:0.00%})", saved, skipped, saved + skipped, total, sw.Elapsed, (Percentage)((saved + skipped)/total)); Load(file); if(Fields.Any(field => Nodes.ContainsKey(field) || Nodes.ContainsKey(field.Flip()))) { skipped++; continue; } if (Fields.Count >= MinPly && Fields.Last().Count < 42) { Console.WriteLine(); if (Analyse()) { saved++; Nodes.Save(dir); } else { skipped++; } } else { skipped++; } } }
public GameAnalyser() { Duration = TimeSpan.FromSeconds(15); Fields = new List<Field>(); Nodes = new SearchTreeKnownNodes(); }