Example #1
0
 private static Covers UncoverDeep(
     this Covers covers,
     MineField mineField,
     Point point)
 {
     if (!covers.IsCovered(point))
     {
         return(covers);
     }
     if (!mineField.IsEmptyAt(point))
     {
         return(covers.Uncover(point));
     }
     return(point
            .Neighbours(mineField.Size)
            .Aggregate(
                covers.Uncover(point),
                (current, neighbor) => current.UncoverDeep(mineField, neighbor)));
 }