Exemple #1
0
 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);
         }
     }
 }
Exemple #2
0
            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");
            }