internal void TryLookAtAstroids(List <Astroid> astroids) { foreach (var astroid in astroids) { var coordinate = astroid.Coordinate; var lineMap = GetSightLineMap(coordinate); var somethingInBetween = astroids.Where(x => x != astroid && lineMap.Contains(x.Coordinate)).Any(); if (!somethingInBetween) { VisibleAstroids.Add(astroid); } else { InVisibleAstroids.Add(astroid); } } }
public string Vaporize200Astroids() { foreach (var astroid in VisibleAstroids) { astroid.CalculateAngle(Coordinate); } var allvisibleastroids = VisibleAstroids.OrderBy(x => x.Angle).ToList(); var i = 0; var puzzle2Answer = string.Empty; while (i < 201) { i++; var astroid = allvisibleastroids[0]; if (i == 200 || allvisibleastroids.Count == 0) { return($"{astroid.Coordinate.X * 100 + astroid.Coordinate.Y}"); } allvisibleastroids.Remove(astroid); } return("nothing found"); }