private double GetScore(Edge e, IBoard board)
{
Intersection[] adjacentFree = board.GetAdjacentIntersections(e).Where(i => board.HasNoNeighbors(i)).ToArray();
if (adjacentFree.Length > 0)
{
return adjacentFree.Average(i => GetScore(i, board));
}
return 0.0;
}