medium :: Strategy
medium b le = do  l <- findSquareEdges b le
                  easy b (if null l then le else l)

-- Tries to complete a square, if not possible tries to avoid to make
-- the third line in a square, if not possible makes a random choice
medium :: Strategy
medium b le = do  l <- findSquareEdges b le
                  easy b (if null l then le else l)

-- Tries to complete a square, if not possible tries to avoid to make
-- the third line in a square, if not possible makes a random choice
medium b le = do  l <- findSquareEdges b le
                  easy b (if null l then le else l)

-- Tries to complete a square, if not possible tries to avoid to make
-- the third line in a square, if not possible makes a random choice