Addendum: there's one other kind of deduction I've just remembered about. Very occasionally, on a grid that is both small and wrapping, you find that there's a whole row or column consisting of corners and straights, except for just one endpoint or T-piece. In that situation you can deduce whether the opposite sides of the odd piece are the same or not (using that opposite sides of a straight are the same, and opposite sides of a corner are different), and in all cases, that lets you deduce something about the orientation of the odd piece.
That would be feasible to implement, using an augmented version of the disjoint-set forest that lets you track a set of boolean flags and remember information of the form 'I know these two flags are [ equal | opposite ], even though I don't know the actual value of either one yet'. I've already got that data structure for use in Loopy, and it would be easy to reuse in Net.
But I've never yet bothered, because that is such a niche deduction – it's not exactly guaranteed to apply only to small wrapping grids, but the larger the grid, the less likely it is to come up.
That would be feasible to implement, using an augmented version of the disjoint-set forest that lets you track a set of boolean flags and remember information of the form 'I know these two flags are [ equal | opposite ], even though I don't know the actual value of either one yet'. I've already got that data structure for use in Loopy, and it would be easy to reuse in Net.
But I've never yet bothered, because that is such a niche deduction – it's not exactly guaranteed to apply only to small wrapping grids, but the larger the grid, the less likely it is to come up.